JavaFX学习之Shape

[b]Shape 继承Node[/b]
方法
setFill(Paint value) 设置内容的颜色

text.setFill(Color.RED);
rectangle.setFill(Color.RED);

setStroke(Paint value) 设置画笔冲击的颜色,也就是画笔沿着线条划线

text.setFill(Color.RED);
rectangle.setFill(Color.RED); //默认黑色

对于方形来说,就只有边界是线条
setSmooth(boolean value) ??
setStrokeDashOffset(double value) ??
setStrokeLineCap(StrokeLineCap value) 修饰stroke边缘
setStrokeLineJoin(StrokeLineJoin value) 修饰线转弯的地方
setStrokeMiterLimit(double value)
setStrokeType(StrokeType value) 画笔冲击的类型,inside往里面填充颜色,outside往边界外边填充颜色,center里面都填充
setStrokeWidth(double value)设置画笔冲击的宽度,线条宽度是不变的。可以说是着色上宽度,要设置setStroke才能看出来。
getStrokeDashArray().addAll(5.0);添加空格索引,也就是隔一段就出现空格。???

rectangle.setStroke(Color.RED);
rectangle.setStrokeWidth(10);

subtract(Shape shape1, Shape shape2)剪切形状,把shape1剪掉shape2部分。
union(Shape shape1, Shape shape2)把二个形状结合。

[b]Text 继承shape[/b]

Text text1 = new Text("abcdefghijklmopqrst1232345678910");

和Button不同,button继承control,所以text没有setPrefSize设置大小的方法。它通过setWrappingWidth设置text的宽度,超过了则自动换行。

text1.setWrappingWidth(50);

但文字超过50pixel大小时,则自动换行。没有设置高度,若想控制高度,可以控制父节点的大小,或则是设置Clip属性,翻译成中文是修剪,对text进行修剪。

text1.setTextOrigin(VPos.TOP);
text1.setClip(RectangleBuilder.create().height(50).width(100).build());

这时候高度只有50,其它的则不能显示。这里宽度,因为上面设置了50,所以这里100设置是无效的,若小于50则有效。可以看到这里还设置了setTextOrigin为TOP,这样clip才从开始位置,默认显示BASELINE。
如果node有大小,而里面又有内容,则有方法控制内容的位置

text1.setTextAlignment(TextAlignment.CENTER);


其它方法
setFont(Font value)设置字体

text1.setFont(new Font(20));

setUnderline(boolean value)设置是否有下划线
setStrikethrough(boolean value)设置是否有删除线,就是在字体上加根横线
setBoundsType(TextBoundsType value)设置边界,该边界小于默认的local。API说是用于当text作为graphic时,为获取紧密封闭的Text边界。

text1.setBoundsType(TextBoundsType.VISUAL);

setFontSmoothingType(FontSmoothingType value) 设置字体smoothing类型: gray or LCD
text1.setFontSmoothingType(FontSmoothingType.LCD);
baselineOffsetProperty() ?????
Text这个类基本上就这些了。

[b]Line extends Shape[/b]

new Line(50,100,200,100);

开始点坐标,结束点坐标
line本身没什么方法

[b]Circle extends Shape[/b]

new Circle(10)

参数半径
circle.setCenterX(300);
circle.setCenterY(300); 设置圆的位置,中心点。
circle在scene中的位置计算:

Point2D point = circle.localToScene(circle.getCenterX(), circle.getCenterY());

circle实际位置等于:centerx+layoutx+translateX。
circle本身也没什么方法

[b]Ploygon extends Shape[/b]

new Polygon(100,100,200,100,200,200,100,200);

多边形,左上,右上,右下,左下四个点构成矩形
polygon本身也没什么方法

[b]Arc[/b]

Arc arc = new Arc();
arc.setCenterX(50.0f);
arc.setCenterY(50.0f);
arc.setRadiusX(25.0f);
arc.setRadiusY(25.0f);
arc.setStartAngle(45.0f);
arc.setLength(270.0f);
arc.setType(ArcType.ROUND);

弧形,中心点位置,x,y半径,起始角度,长度,类型
起始角度是以中心点到开始点的角度
弧形的类型有圆,

[b]CubicCurve[/b]

CubicCurve cubic = new CubicCurve();
cubic.setStartX(0.0f);
cubic.setStartY(50.0f);
cubic.setControlX1(25.0f);
cubic.setControlY1(0.0f);
cubic.setControlX2(75.0f);
cubic.setControlY2(100.0f);
cubic.setEndX(100.0f);
cubic.setEndY(50.0f);

二次方线
[b]Ellipse[/b]

Ellipse ellipse = new Ellipse();
ellipse.setCenterX(50.0f);
ellipse.setCenterY(50.0f);
ellipse.setRadiusX(50.0f);
ellipse.setRadiusY(25.0f);

椭圆
[b]Polyline[/b]

Polyline polyline = new Polyline();
polyline.getPoints().addAll(new Double[]{
0.0, 0.0,
20.0, 10.0,
10.0, 20.0 });

折线

[b]QuadCurve[/b]
[quote]
QuadCurve quad = new QuadCurve();
quad.setStartX(0.0f);
quad.setStartY(50.0f);
quad.setEndX(50.0f);
quad.setEndY(50.0f);
quad.setControlX(25.0f);
quad.setControlY(0.0f);
[/quote]

[b]Path[/b]

Path path = new Path();
MoveTo mt = new MoveTo(50,50);
LineTo lt = new LineTo(100,50);
path.getElements().addAll(mt,lt);
path.setStroke(Color.RED);

必须要有moveto作为起始点
Path主要由pathElement构成
ArcTo
CubicCurveTo
HLineTo 水平直线,参数只有X值
LineTo 起始点沿着直线到终点位置
MoveTo 起始点位置
QuadCurveTo
VLineTo


刚开始学,很多不懂。希望大家指导一下,说错的地方,请大家帮忙更正。


这里有很多javafx的小游戏,一个高手写的
[url]http://lustrezhang.gotoip4.com/fxgame/[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值