`

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/
分享到:
评论

相关推荐

    javafx+geotools实现shape读写工具

    JavaFX和GeoTools结合可以创建一个强大的地理信息系统(GIS)应用程序,主要针对shape文件的读写操作。在本文中,我们将深入探讨如何利用这两个技术来实现所述的功能。 首先,JavaFX是一个用于创建桌面和移动应用的...

    javaFX Demo 模板案例

    通过`javafx.scene`包下的类,例如`Group`、`Shape`和`Scene`,可以绘制各种几何形状,添加动画效果,实现复杂的视觉呈现。如果这个Demo包含图形元素,我们可以学习到如何在JavaFX中绘制和操作2D或3D图形。 媒体...

    javafx之属性与绑定

    "javafx之属性与绑定" JavaFX 是一种新的 Java 技术,用于处理动态画面,画面精美令人赞叹。了解 JavaFX 的属性和绑定是非常重要的。 JavaFX 的属性是基于 JavaBean 的模式,但做了扩展和改进。JavaFX 的属性经常...

    《JavaFX Essentials》 源码

    JavaFX支持2D和3D图形,通过JavaFX的Shape类和Group类,开发者可以创建和组合各种几何形状,实现复杂图形的绘制。对于3D,JavaFX提供了一个强大的Stage3D API,可以创建具有深度和透视的3D场景。 5. **媒体支持**...

    javaFX 飞机游戏

    在这个“javaFX 飞机游戏”项目中,开发者利用 JavaFX 的特性构建了一个飞机大战游戏,旨在学习和掌握 JavaFX 的用法。 首先,`Shooter.iml` 文件是 IntelliJ IDEA 创建的项目配置文件,它包含了项目的模块信息,如...

    javafx-src.zip

    4. **2D和3D图形**:JavaFX提供了强大的2D和3D图形库,如javafx.scene.shape和javafx.scene.image,可以创建复杂的几何形状、图像处理以及动画效果。 5. **媒体处理**:JavaFX内建了媒体API(javafx.media),可以...

    JavaFx本质论源代码

    对于2D和3D图形的支持,JavaFX提供了javafx.scene.shape和javafx.scene.image包,其中包含各种形状和图像类。同时,javafx.scene.media包提供了音频和视频的播放功能,可以创建多媒体应用程序。 在"EssentialJavaFX...

    javafx画板-源码

    JavaFX 是一个用于构建桌面应用、移动应用以及嵌入式系统的富客户端用户界面(Rich Client ...通过学习和分析该项目,开发者可以深入理解JavaFX的图形绘制、事件处理、状态管理以及MVC设计模式在实际项目中的应用。

    javaFx版泡泡龙和

    总的来说,JavaFX版泡泡龙的开发涵盖了Java编程、图形界面设计、游戏逻辑实现等多个方面,对于学习和掌握JavaFX技术以及提升游戏开发能力都有很大帮助。通过阅读和分析项目的源码,可以深入理解上述知识点的具体应用...

    使用JavaFX+构建GUI+教程

    JavaFX Script 使用了一种简洁的语法,其中最显著的特点之一就是使用 **对象字面量** 来创建对象。对象字面量提供了一种非常直观的方式来构造和初始化对象。例如: ```java Stage{ title: "My Application", width:...

    JavaFX编程程序

    JavaFX是一种用于构建桌面、移动和嵌入式设备上的富客户端应用...同时,随着技术的发展,JavaFX也不断更新,比如引入JavaFX 11及以后版本,需要与OpenJFX和模块系统配合使用,这也需要开发者保持对新技术的关注和学习。

    Java学习指南19 JavaFX入门

    这是『Java学习指南系列』的第19篇教程 ,是Java开发的高级课程,介绍JavaFX的入门技术。 JavaFX教程分为2篇:JavaFX入门篇 , JavaFX高级篇。 二、主要内容? 本篇介绍JavaFX的基本技术,至少包括以下方法:* 基本...

    javafx-scr.zip

    总的来说,"javafx-scr.zip" 这个压缩包很可能是为了帮助开发者学习和使用JavaFX技术,其中可能包含了示例代码、库文件或者是用于演示JavaFX特性的项目。通过深入研究这些文件,你可以了解如何使用JavaFX来构建现代...

    JavaFX初识

    总的来说,"JavaFX初识"是一个很好的起点,通过"Clock"工程的实践,学习者可以掌握JavaFX的基本元素、UI设计、事件处理以及应用结构。这不仅有助于理解JavaFX的工作原理,也为创建更复杂的JavaFX应用程序打下坚实的...

    BUAA软件学院大二Java大作业,仅使用JavaFX实现了一个Mario游戏.zip

    总的来说,这个项目是JavaFX入门级游戏开发的一个实例,对于学习JavaFX和游戏编程的学生来说,是一个很好的实践和参考资源。通过分析和理解这个项目,可以深入理解JavaFX如何构建交互式应用,以及如何利用Java编程...

    geotools-fx:JavaFX UI的GeoTools实用程序

    5. **数据访问和处理**:利用GeoTools FX,开发者可以方便地接入各种地理空间数据源,如Shapefiles、GeoTIFF、PostGIS数据库等。同时,它还提供了数据过滤、聚合、缓冲区分析等空间操作。 6. **事件处理和响应**:...

    JavaFX3D-ManeuvringACamera:演示在JavaFX 3D中操纵相机的方法的应用程序

    - 3D场景的核心元素包括:`Group`(用于组合多个3D对象)、`Shape3D`(如`Box`, `Sphere`, `Cylinder`等基本形状)和`Camera`(用于定义观察者的位置和视角)。 2. **相机在JavaFX 3D中的角色**: - 相机是JavaFX...

    CircleAnimation:绕圈旋转(JavaFX动画)

    解压后,开发者可以查看和运行源代码,学习如何将JavaFX动画技术应用于自己的项目中。 总之,JavaFX的动画系统为开发者提供了丰富的功能,使得创建动态用户界面变得简单且直观。通过掌握这些基础知识,你可以创造出...

    BezierCurve:简单的 JavaFX 练习和说明如何在屏幕上绘制 2D Bezier 曲线

    在 JavaFX 中,`javafx.scene.shape.QuadCurve` 类用于绘制二次贝塞尔曲线,而 `javafx.scene.shape.CubicCurve` 类则用于绘制三次贝塞尔曲线。为了在屏幕上绘制曲线,你需要实例化这些类,并设置它们的起点、终点和...

    openjfx-13.0.1-javadoc.zip

    例如,可以使用`javafx.scene.shape`包中的类创建几何形状,使用`javafx.scene.paint`包中的类进行颜色和渐变处理,而`javafx.scene.canvas`和`javafx.scene.web.WebEngine`则提供了绘制和展示Web内容的能力。...

Global site tag (gtag.js) - Google Analytics