`

JavaFX学习之Shape

阅读更多
   Shape  继承Node
方法
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)把二个形状结合。

   Text 继承shape
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这个类基本上就这些了。

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

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

    Circle extends Shape
new Circle(10)

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

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

   Ploygon extends Shape
new Polygon(100,100,200,100,200,200,100,200);

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

   Arc
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半径,起始角度,长度,类型
起始角度是以中心点到开始点的角度
弧形的类型有圆,
  
   CubicCurve
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);

二次方线
   Ellipse
Ellipse ellipse = new Ellipse();
ellipse.setCenterX(50.0f);
ellipse.setCenterY(50.0f);
ellipse.setRadiusX(50.0f);
ellipse.setRadiusY(25.0f);

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

折线

   QuadCurve
引用

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);


   Path 
		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的小游戏,一个高手写的
http://lustrezhang.gotoip4.com/fxgame/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics