JavaFX学习之Shape
程序员文章站
2022-06-08 10:34:06
...
[b]Shape 继承Node[/b]
方法
setFill(Paint value) 设置内容的颜色
setStroke(Paint value) 设置画笔冲击的颜色,也就是画笔沿着线条划线
对于方形来说,就只有边界是线条
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);添加空格索引,也就是隔一段就出现空格。???
subtract(Shape shape1, Shape shape2)剪切形状,把shape1剪掉shape2部分。
union(Shape shape1, Shape shape2)把二个形状结合。
[b]Text 继承shape[/b]
和Button不同,button继承control,所以text没有setPrefSize设置大小的方法。它通过setWrappingWidth设置text的宽度,超过了则自动换行。
但文字超过50pixel大小时,则自动换行。没有设置高度,若想控制高度,可以控制父节点的大小,或则是设置Clip属性,翻译成中文是修剪,对text进行修剪。
这时候高度只有50,其它的则不能显示。这里宽度,因为上面设置了50,所以这里100设置是无效的,若小于50则有效。可以看到这里还设置了setTextOrigin为TOP,这样clip才从开始位置,默认显示BASELINE。
如果node有大小,而里面又有内容,则有方法控制内容的位置
其它方法
setFont(Font value)设置字体
setUnderline(boolean value)设置是否有下划线
setStrikethrough(boolean value)设置是否有删除线,就是在字体上加根横线
setBoundsType(TextBoundsType value)设置边界,该边界小于默认的local。API说是用于当text作为graphic时,为获取紧密封闭的Text边界。
setFontSmoothingType(FontSmoothingType value) 设置字体smoothing类型: gray or LCD
text1.setFontSmoothingType(FontSmoothingType.LCD);
baselineOffsetProperty() ?????
Text这个类基本上就这些了。
[b]Line extends Shape[/b]
开始点坐标,结束点坐标
line本身没什么方法
[b]Circle extends Shape[/b]
参数半径
circle.setCenterX(300);
circle.setCenterY(300); 设置圆的位置,中心点。
circle在scene中的位置计算:
circle实际位置等于:centerx+layoutx+translateX。
circle本身也没什么方法
[b]Ploygon extends Shape[/b]
多边形,左上,右上,右下,左下四个点构成矩形
polygon本身也没什么方法
[b]Arc[/b]
弧形,中心点位置,x,y半径,起始角度,长度,类型
起始角度是以中心点到开始点的角度
弧形的类型有圆,
[b]CubicCurve[/b]
二次方线
[b]Ellipse[/b]
椭圆
[b]Polyline[/b]
折线
[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]
必须要有moveto作为起始点
Path主要由pathElement构成
ArcTo
CubicCurveTo
HLineTo 水平直线,参数只有X值
LineTo 起始点沿着直线到终点位置
MoveTo 起始点位置
QuadCurveTo
VLineTo
刚开始学,很多不懂。希望大家指导一下,说错的地方,请大家帮忙更正。
这里有很多javafx的小游戏,一个高手写的
[url]http://lustrezhang.gotoip4.com/fxgame/[/url]
方法
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]
上一篇: 深入浅出Nginx之二
下一篇: JavaFX学习之Web