Module  javafx.graphics
软件包  javafx.scene.shape

Class Shape

  • All Implemented Interfaces:
    StyleableEventTarget
    已知直接子类:
    ArcCircleCubicCurveEllipseLinePathPolygonPolylineQuadCurveRectangleSVGPathText


    public abstract class Shape
    extends Node
    Shape类为表示某种形式的几何形状的对象提供了常见属性的定义。 这些属性包括:
    • Paint应用于形状的可填充内部(见setFill )。
    • Paint要被施加到行程中的形状的轮廓(参见setStroke )。
    • 中风的装饰性,包括:
      • 边框行程的宽度。
      • 是否将边框作为外形填充到形状的边缘,作为沿着边框内部的内部边缘,或者沿着跨越边界的宽的路径跨越其内部和外部(参见StrokeType )。
      • 路径段和路径未封闭端之间的连接的装饰风格。
      • 冲击属性。

    应用程序不应该直接扩展Shape类。 否则可能导致抛出UnsupportedOperationException异常。

    与坐标系的交互

    大多数节点往往只应用整数翻译,而且常常使用整数坐标来定义。 对于这种常见情况,直线边缘的形状的填充倾向于变脆,因为它们与落在整数设备坐标上的像素之间的裂缝排列,因此倾向于自然地覆盖整个像素。

    另一方面,抚摸这些相同的形状通常会导致模糊的轮廓,因为默认的抚摸属性既指定了默认行程宽度也是1.0坐标,这些坐标通常映射到正好1个设备像素,并且笔画应该跨越形状的边界,在边界两边下降一半。 由于许多常见形状的边界倾向于直接落在整数坐标上,并且这些整数坐标经常精确地映射到整数设备位置,所以边界倾向于导致形状边界任一侧上的像素行和列的50%覆盖而不是100%的覆盖在一个或另一个。 因此,填充物通常可以是清脆的,但是中风通常是模糊的。

    避免这些模糊轮廓的两个常见解决方案是使用更宽的笔画来覆盖更多的像素 - 通常如果没有刻度变换有效,通常笔触宽度为2.0,或者指定StrokeType.INSIDEStrokeType.OUTSIDE笔触样式将默认单个单位笔画偏置在形状边框的内部或外部的完整像素行或列之一上。

    从以下版本开始:
    JavaFX 2.0
    • Property Detail

      • strokeType

        public final ObjectProperty<StrokeType> strokeTypeProperty
        定义将strokeWidth应用于形状边界的方向(内部,中心或外部)。

        该图像显示没有笔画的形状,并且内部,中心和外部具有较厚的笔画。

        StrokeType如何工作的视觉插图

        Default value:
        CENTERED
        另请参见:
        getStrokeType()setStrokeType(StrokeType)
      • strokeMiterLimit

        public final DoubleProperty strokeMiterLimitProperty
        定义StrokeLineJoin.MITER线连接样式的限制。 小于1.0的值将被视为1.0。

        该图像演示了行为。 计算斜角长度( A )作为关节的最内侧点到最外侧点的距离,以行程宽度为单位。 如果斜角长度大于给定斜角极限,则在形状边缘切割斜角( B )。 对于图像中的情况,这意味着对于小于B的极限值,斜角将被切割为4.65

        使用StrokeMiterLimit的视觉插图

        Default value:
        10.0
        另请参见:
        getStrokeMiterLimit()setStrokeMiterLimit(double)
      • strokeDashOffset

        public final DoubleProperty strokeDashOffsetProperty
        定义在用户坐标中指定的距离,该距离代表破折号模式的偏移量。 换句话说,虚线阶段定义了冲击模式中对应于笔画开头的点。

        该图像显示具有仪表阵列[25, 20, 5, 20]的行程和具有相同图案和偏移量45的行程,其移动关于第一虚线段的长度的模式和随后的空间。

        使用StrokeDashOffset的可视化说明

        Default value:
        0
        另请参见:
        getStrokeDashOffset()setStrokeDashOffset(double)
      • fill

        public final ObjectProperty<Paint> fillProperty
        使用Paint上下文的设置定义填充Shape内部的参数。 除Line,Polyline和Path之外的所有形状的默认值为Color.BLACK 这些形状的默认值为null
        另请参见:
        getFill()setFill(Paint)
      • stroke

        public final ObjectProperty<Paint> strokeProperty
        使用指定的Paint的设置定义围绕Shape轮廓绘制的笔触的参数。 除Line,Polyline和Path之外的所有形状的默认值为null 这些形状的默认值为Color.BLACK
        另请参见:
        getStroke()setStroke(Paint)
    • 构造方法详细信息

      • Shape

        public Shape​()
        创建一个空的Shape实例。
    • 方法详细信息

      • setStrokeType

        public final void setStrokeType​(StrokeType value)
        设置属性strokeType的值。
        Property description:
        定义将strokeWidth应用于形状边界的方向(内部,中心或外部)。

        该图像显示没有笔画的形状,并且内部,中心和外部具有较厚的笔画。

        StrokeType如何工作的视觉插图

        Default value:
        CENTERED
      • getStrokeType

        public final StrokeType getStrokeType​()
        获取属性strokeType的值。
        Property description:
        定义将strokeWidth应用于形状边界的方向(内部,中心或外部)。

        该图像显示没有笔画的形状,并且内部,中心和外部具有较厚的笔画。

        StrokeType如何工作的视觉插图

        Default value:
        CENTERED
      • strokeTypeProperty

        public final ObjectProperty<StrokeType> strokeTypeProperty​()
        定义将strokeWidth应用于形状边界的方向(内部,中心或外部)。

        该图像显示没有笔画的形状,并且内部,中心和外部具有较厚的笔画。

        StrokeType如何工作的视觉插图

        Default value:
        CENTERED
        另请参见:
        getStrokeType()setStrokeType(StrokeType)
      • setStrokeWidth

        public final void setStrokeWidth​(double value)
        设置属性strokeWidth的值。
        Property description:
        定义方形笔线宽度。 值0.0表示发丝中风。 小于0.0的值将被视为0.0。
        Default value:
        1.0
      • getStrokeWidth

        public final double getStrokeWidth​()
        获取属性strokeWidth的值。
        Property description:
        定义方形笔线宽度。 值0.0表示发丝中风。 小于0.0的值将被视为0.0。
        Default value:
        1.0
      • setStrokeLineJoin

        public final void setStrokeLineJoin​(StrokeLineJoin value)
        设置属性strokeLineJoin的值。
        Property description:
        定义路径段相遇时应用的装饰。 值必须具有以下值之一: StrokeLineJoin.MITERStrokeLineJoin.BEVEL ,并StrokeLineJoin.ROUND 图像显示使用上述顺序的值的形状。

        使用3种不同值的StrokeLineJoin的视觉图示

        Default value:
        迈特
      • getStrokeLineJoin

        public final StrokeLineJoin getStrokeLineJoin​()
        获取属性strokeLineJoin的值。
        Property description:
        定义路径段相遇时应用的装饰。 值必须具有以下值之一: StrokeLineJoin.MITERStrokeLineJoin.BEVEL ,并StrokeLineJoin.ROUND 图像显示使用上述顺序的值的形状。

        使用3种不同值的StrokeLineJoin的视觉图示

        Default value:
        迈特
      • setStrokeLineCap

        public final void setStrokeLineCap​(StrokeLineCap value)
        设置属性strokeLineCap的值。
        Property description:
        如此端盖风格Shape为确定可能端盖风格以下值之一: StrokeLineCap.BUTTStrokeLineCap.ROUND ,并StrokeLineCap.SQUARE 图像显示使用上述顺序的值的行。

        使用3个不同值的StrokeLineCap的可视化图示

        Default value:
        广场
      • getStrokeLineCap

        public final StrokeLineCap getStrokeLineCap​()
        获取属性strokeLineCap的值。
        Property description:
        如此端盖风格Shape为确定可能端盖风格以下值之一: StrokeLineCap.BUTTStrokeLineCap.ROUND ,并StrokeLineCap.SQUARE 图像显示使用上述顺序的值的行。

        使用3个不同值的StrokeLineCap的可视化图示

        Default value:
        广场
      • setStrokeMiterLimit

        public final void setStrokeMiterLimit​(double value)
        设置属性strokeMiterLimit的值。
        Property description:
        定义StrokeLineJoin.MITER线连接样式的限制。 小于1.0的值将被视为1.0。

        该图像演示了行为。 计算斜角长度( A )作为关节的最内侧点到最外侧点的距离,以行程宽度为单位。 如果斜角长度大于给定斜角极限,则在形状边缘切割斜角( B )。 对于图像中的情况,这意味着对于小于B的极限值,斜角将被切割为4.65

        使用StrokeMiterLimit的视觉插图

        Default value:
        10.0
      • getStrokeMiterLimit

        public final double getStrokeMiterLimit​()
        获取属性strokeMiterLimit的值。
        Property description:
        定义StrokeLineJoin.MITER线连接样式的限制。 小于1.0的值将被视为1.0。

        该图像演示了行为。 计算斜角长度( A )作为关节的最内侧点到最外侧点的距离,以行程宽度为单位。 如果斜角长度大于给定斜角极限,则在形状边缘切割斜角( B )。 对于图像中的情况,这意味着对于小于B的极限值,斜角将被切割为4.65

        使用StrokeMiterLimit的视觉插图

        Default value:
        10.0
      • strokeMiterLimitProperty

        public final DoubleProperty strokeMiterLimitProperty​()
        定义StrokeLineJoin.MITER线连接样式的限制。 小于1.0的值将被视为1.0。

        该图像演示了行为。 计算斜角长度( A )作为关节的最内侧点到最外侧点的距离,以行程宽度为单位。 如果斜角长度大于给定斜角极限,则在形状边缘切割斜角( B )。 对于图像中的情况,这意味着对于小于B的极限值,斜角将被切割为4.65

        使用StrokeMiterLimit的视觉插图

        Default value:
        10.0
        另请参见:
        getStrokeMiterLimit()setStrokeMiterLimit(double)
      • setStrokeDashOffset

        public final void setStrokeDashOffset​(double value)
        设置属性strokeDashOffset的值。
        Property description:
        定义在用户坐标中指定的距离,该距离代表破折号模式的偏移量。 换句话说,虚线阶段定义了冲击模式中对应于笔画开头的点。

        该图像显示具有仪表阵列[25, 20, 5, 20]的行程和具有相同图案和偏移量45的行程,其移动关于第一虚线段的长度和随后的空间的图案。

        使用StrokeDashOffset的可视化说明

        Default value:
        0
      • getStrokeDashOffset

        public final double getStrokeDashOffset​()
        获取属性strokeDashOffset的值。
        Property description:
        定义在用户坐标中指定的距离,该距离代表破折号模式的偏移量。 换句话说,虚线阶段定义了冲击模式中对应于笔画开头的点。

        该图像显示具有仪表阵列[25, 20, 5, 20]的冲程和具有相同图案和偏移的45 ,其移动关于第一虚线段的长度和随后的空间的图案。

        使用StrokeDashOffset的可视化说明

        Default value:
        0
      • strokeDashOffsetProperty

        public final DoubleProperty strokeDashOffsetProperty​()
        定义在用户坐标中指定的距离,该距离代表破折号模式的偏移量。 换句话说,虚线阶段定义了冲击模式中对应于笔画开头的点。

        该图像显示具有仪表阵列[25, 20, 5, 20]的冲程和具有相同图案和偏移的45 ,其移动关于第一虚线段的长度和随后的空间的图案。

        使用StrokeDashOffset的可视化说明

        Default value:
        0
        另请参见:
        getStrokeDashOffset()setStrokeDashOffset(double)
      • getStrokeDashArray

        public final ObservableList<Double> getStrokeDashArray​()
        定义表示短划线段长度的数组。 数组中的备用条目表示破折号的不透明和透明段的用户空间长度。 当笔沿着要抚摸的Shape的轮廓移动时,笔的行进的用户空间距离被累积。 距离值用于索引到仪表盘阵列中。 当笔的当前累积距离映射到仪表阵列的偶数元素(从0计数)时,笔是不透明的,否则为透明度。

        空的strokeDashArray表示没有空格的实线。 奇数长度strokeDashArray的行为与通过连续两次隐含地重复指示的奇数长度数组构造的偶数长度数组相同( [20, 5, 15]表现为[20, 5, 15, 20, 5, 15] )。

        请注意,每个破折号段将被当前行程行上限指定的装饰上限。

        该图像示出与中风虚线数组的形状[25, 20, 5, 20]和用于笔画线盖3个不同的值: StrokeLineCap.BUTTStrokeLineCap.SQUARE (默认值),并且StrokeLineCap.ROUND

        使用StrokeDashArray使用3个不同的值作为笔画线帽的视觉图示

        Default value:
        结果
        该数组表示短划线段的长度
      • setFill

        public final void setFill​(Paint value)
        设置属性填充的值。
        Property description:
        使用Paint上下文的设置定义填充Shape内部的参数。 除Line,Polyline和Path之外的所有形状的默认值为Color.BLACK 这些形状的默认值为null
      • getFill

        public final Paint getFill​()
        获取属性填充的值。
        Property description:
        使用Paint上下文的设置定义填充Shape内部的参数。 除Line,Polyline和Path之外的所有形状的默认值为Color.BLACK 这些形状的默认值为null
      • fillProperty

        public final ObjectProperty<Paint> fillProperty​()
        使用Paint上下文的设置定义填充Shape内部的参数。 除Line,Polyline和Path之外的所有形状的默认值为Color.BLACK 这些形状的默认值为null
        另请参见:
        getFill()setFill(Paint)
      • setStroke

        public final void setStroke​(Paint value)
        设置属性笔画的值。
        Property description:
        使用指定的Paint的设置定义围绕Shape轮廓绘制的笔触的参数。 除Line,Polyline和Path之外的所有形状的默认值为null 这些形状的默认值为Color.BLACK
      • getStroke

        public final Paint getStroke​()
        获取属性笔画的值。
        Property description:
        使用指定的Paint的设置定义围绕Shape轮廓绘制的笔触的参数。 除Line,Polyline和Path之外的所有形状的默认值为null 这些形状的默认值为Color.BLACK
      • strokeProperty

        public final ObjectProperty<Paint> strokeProperty​()
        使用指定的Paint的设置定义围绕Shape轮廓绘制的笔触的参数。 除Line,Polyline和Path之外的所有形状的默认值为null 这些形状的默认值为Color.BLACK
        另请参见:
        getStroke()setStroke(Paint)
      • setSmooth

        public final void setSmooth​(boolean value)
        设置属性的值平滑。
        Property description:
        定义Shape是否使用抗锯齿提示。 如果值等于true,则应用渲染提示。
        Default value:
        真正
      • isSmooth

        public final boolean isSmooth​()
        获取属性的值平滑。
        Property description:
        定义Shape是否使用抗锯齿提示。 如果值等于true,则应用渲染提示。
        Default value:
        真正
      • smoothProperty

        public final BooleanProperty smoothProperty​()
        定义Shape是否使用抗锯齿提示。 如果值等于true,则应用渲染提示。
        Default value:
        真正
        另请参见:
        isSmooth()setSmooth(boolean)
      • getClassCssMetaData

        public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData​()
        结果
        与此类相关联的CssMetaData可能包括其类的CssMetaData。
        从以下版本开始:
        JavaFX 8.0
      • union

        public static Shape union​(Shape shape1,
                                  Shape shape2)
        返回一个新的Shape ,它被创建为指定输入形状的并集。

        该操作适用于输入形状占据的几何区域。 对于单个Shape ,如果形状具有非空填充,则该区域包括填充所占据的面积,以及如果形状具有非空行程,则该区域由笔画占据的面积。 所以这个区域是空的一个形状与null笔画和null填充。 由操作考虑的输入形状的区域与用于填充或冲程的油漆的类型和构造无关。 在最终操作之前,将输入形状的区域变换到它们各自最顶层的父节点的父坐标空间。

        所得到的形状将包括任何输入形状中包含的区域。

          shape1       +       shape2       =       result
           +----------------+   +----------------+   +----------------+
           |################|   |################|   |################|
           |##############  |   |  ##############|   |################|
           |############    |   |    ############|   |################|
           |##########      |   |      ##########|   |################|
           |########        |   |        ########|   |################|
           |######          |   |          ######|   |######    ######|
           |####            |   |            ####|   |####        ####|
           |##              |   |              ##|   |##            ##|
           +----------------+   +----------------+   +----------------+ 
        参数
        shape1 - 第一个形状
        shape2 - 第二个形状
        结果
        创建的 Shape
      • subtract

        public static Shape subtract​(Shape shape1,
                                     Shape shape2)
        返回一个新的Shape ,它是通过从第一个形状中减去指定的第二个形状而创建的。

        该操作适用于输入形状占据的几何区域。 对于单个Shape ,如果形状具有非空填充,则该区域包括填充所占据的面积,以及如果形状具有非空行程,则该区域被行程占据的区域。 所以这个区域是空的一个形状与null笔画和null填充。 由操作考虑的输入形状的区域与用于填充或冲程的油漆的类型和构造无关。 在最终操作之前,将输入形状的区域变换到它们各自最顶层的父节点的父坐标空间。

        所形成的形状将包括只包含在第一形状而不是第二形状的区域。

          shape1       -       shape2       =       result
           +----------------+   +----------------+   +----------------+
           |################|   |################|   |                |
           |##############  |   |  ##############|   |##              |
           |############    |   |    ############|   |####            |
           |##########      |   |      ##########|   |######          |
           |########        |   |        ########|   |########        |
           |######          |   |          ######|   |######          |
           |####            |   |            ####|   |####            |
           |##              |   |              ##|   |##              |
           +----------------+   +----------------+   +----------------+ 
        参数
        shape1 - 第一个形状
        shape2 - 第二个形状
        结果
        创建的 Shape
      • intersect

        public static Shape intersect​(Shape shape1,
                                      Shape shape2)
        返回一个新的Shape ,它被创建为指定输入形状的交集。

        该操作适用于输入形状占据的几何区域。 对于单个Shape ,如果形状具有非空填充,则该区域包括填充所占据的面积,以及如果形状具有非空行程,则占据该区域的区域。 所以这个区域是空的一个形状与null笔画和null填充。 由操作考虑的输入形状的区域与用于填充或冲程的油漆的类型和构造无关。 在最终操作之前,将输入形状的区域变换到它们各自最顶层的父节点的父坐标空间。

        所得到的形状将仅包括包含在两个输入形状中的区域。

          shape1       +       shape2       =       result
           +----------------+   +----------------+   +----------------+
           |################|   |################|   |################|
           |##############  |   |  ##############|   |  ############  |
           |############    |   |    ############|   |    ########    |
           |##########      |   |      ##########|   |      ####      |
           |########        |   |        ########|   |                |
           |######          |   |          ######|   |                |
           |####            |   |            ####|   |                |
           |##              |   |              ##|   |                |
           +----------------+   +----------------+   +----------------+ 
        参数
        shape1 - 第一个形状
        shape2 - 第二个形状
        结果
        the created Shape