Most visited

Recently visited

Added in API level 1

Path

public class Path
extends Object

java.lang.Object
   ↳ android.graphics.Path


Path类封装了由直线段,二次曲线和三次曲线组成的复合(多轮廓)几何路径。 它可以用canvas.drawPath(path,paint)绘制,可以是填充或描边(基于绘制的样式),也可以用于剪裁或在路径上绘制文本。

Summary

Nested classes

枚举 Path.Direction

指定封闭形状(例如,

枚举 Path.FillType

枚举路径可能被填充的方式。

枚举 Path.Op

组合两条路径时可以执行的逻辑操作。

Public constructors

Path()

创建一个空路径

Path(Path src)

创建一个新路径,从src路径复制内容。

Public methods

void addArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle)

将指定的弧作为新轮廓添加到路径中。

void addArc(RectF oval, float startAngle, float sweepAngle)

将指定的弧作为新轮廓添加到路径中。

void addCircle(float x, float y, float radius, Path.Direction dir)

向路径添加封闭的圆形轮廓

void addOval(RectF oval, Path.Direction dir)

在路径中添加一个封闭的椭圆形轮廓

void addOval(float left, float top, float right, float bottom, Path.Direction dir)

在路径中添加一个封闭的椭圆形轮廓

void addPath(Path src, Matrix matrix)

将一个src副本添加到由矩阵转换的路径中

void addPath(Path src)

将src的副本添加到路径中

void addPath(Path src, float dx, float dy)

将src的副本添加到路径中,由(dx,dy)

void addRect(RectF rect, Path.Direction dir)

向路径添加封闭的矩形轮廓

void addRect(float left, float top, float right, float bottom, Path.Direction dir)

向路径添加封闭的矩形轮廓

void addRoundRect(RectF rect, float rx, float ry, Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓

void addRoundRect(float left, float top, float right, float bottom, float rx, float ry, Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓

void addRoundRect(RectF rect, float[] radii, Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓。

void addRoundRect(float left, float top, float right, float bottom, float[] radii, Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓。

void arcTo(RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo)

将指定的弧作为新轮廓追加到路径中。

void arcTo(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean forceMoveTo)

将指定的弧作为新轮廓追加到路径中。

void arcTo(RectF oval, float startAngle, float sweepAngle)

将指定的弧作为新轮廓追加到路径中。

void close()

关闭当前轮廓。

void computeBounds(RectF bounds, boolean exact)

计算路径控制点的边界,并将答案写入边界。

void cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)

接近控制点(x1,y1)和(x2,y2),结束于(x3,y3),添加一个三次贝塞尔曲线。

Path.FillType getFillType()

返回路径的填充类型。

void incReserve(int extraPtCount)

提示准备添加更多积分的路径。

boolean isConvex()

返回路径的凸面,由路径的内容定义。

boolean isEmpty()

如果路径为空(不包含直线或曲线),则返回true

boolean isInverseFillType()

如果filltype是INVERSE变体之一,则返回true

boolean isRect(RectF rect)

如果路径指定了矩形,则返回true。

void lineTo(float x, float y)

从最后一个点到指定点(x,y)添加一条线。

void moveTo(float x, float y)

将下一个轮廓的起点设置为点(x,y)。

void offset(float dx, float dy, Path dst)

(dx,dy)偏移路径

void offset(float dx, float dy)

(dx,dy)偏移路径

boolean op(Path path1, Path path2, Path.Op op)

将此路径设置为将Op应用于两个指定路径的结果。

boolean op(Path path, Path.Op op)

将此路径设置为将Op应用于此路径和指定路径的结果。

void quadTo(float x1, float y1, float x2, float y2)

从最后一个点开始,接近控制点(x1,y1),结束于(x2,y2),添加一个二次贝塞尔曲线。

void rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3)

与cubicTo相同,但坐标被视为相对于此轮廓上的当前点。

void rLineTo(float dx, float dy)

与lineTo相同,但坐标相对于此轮廓上的最后一个点。

void rMoveTo(float dx, float dy)

将下一个轮廓的起点设置为相对于上一个轮廓上的最后一个点。

void rQuadTo(float dx1, float dy1, float dx2, float dy2)

与quadTo相同,但坐标相对于此轮廓上的最后一个点。

void reset()

清除路径中的所有线条和曲线,使其变为空白。

void rewind()

回滚路径:清除路径中的所有线条和曲线,但保留内部数据结构以加快重用。

void set(Path src)

将此内容替换为src的内容。

void setFillType(Path.FillType ft)

设置路径的填充类型。

void setLastPoint(float dx, float dy)

设置路径的最后一个点。

void toggleInverseFillType()

切换filltype的INVERSE状态

void transform(Matrix matrix, Path dst)

用矩阵变换这个路径中的点,并将答案写入dst。

void transform(Matrix matrix)

通过矩阵变换此路径中的点。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object

Public constructors

Path

Added in API level 1
Path ()

创建一个空路径

Path

Added in API level 1
Path (Path src)

创建一个新路径,从src路径复制内容。

Parameters
src Path: The path to copy from when initializing the new path

Public methods

addArc

Added in API level 21
void addArc (float left, 
                float top, 
                float right, 
                float bottom, 
                float startAngle, 
                float sweepAngle)

将指定的弧作为新轮廓添加到路径中。

Parameters
left float
top float
right float
bottom float
startAngle float: Starting angle (in degrees) where the arc begins
sweepAngle float: Sweep angle (in degrees) measured clockwise

addArc

Added in API level 1
void addArc (RectF oval, 
                float startAngle, 
                float sweepAngle)

将指定的弧作为新轮廓添加到路径中。

Parameters
oval RectF: The bounds of oval defining the shape and size of the arc
startAngle float: Starting angle (in degrees) where the arc begins
sweepAngle float: Sweep angle (in degrees) measured clockwise

addCircle

Added in API level 1
void addCircle (float x, 
                float y, 
                float radius, 
                Path.Direction dir)

向路径添加封闭的圆形轮廓

Parameters
x float: The x-coordinate of the center of a circle to add to the path
y float: The y-coordinate of the center of a circle to add to the path
radius float: The radius of a circle to add to the path
dir Path.Direction: The direction to wind the circle's contour

addOval

Added in API level 1
void addOval (RectF oval, 
                Path.Direction dir)

在路径中添加一个封闭的椭圆形轮廓

Parameters
oval RectF: The bounds of the oval to add as a closed contour to the path
dir Path.Direction: The direction to wind the oval's contour

addOval

Added in API level 21
void addOval (float left, 
                float top, 
                float right, 
                float bottom, 
                Path.Direction dir)

在路径中添加一个封闭的椭圆形轮廓

Parameters
left float
top float
right float
bottom float
dir Path.Direction: The direction to wind the oval's contour

addPath

Added in API level 1
void addPath (Path src, 
                Matrix matrix)

将一个src副本添加到由矩阵转换的路径中

Parameters
src Path: The path to add as a new contour
matrix Matrix

addPath

Added in API level 1
void addPath (Path src)

将src的副本添加到路径中

Parameters
src Path: The path that is appended to the current path

addPath

Added in API level 1
void addPath (Path src, 
                float dx, 
                float dy)

将src的副本添加到路径中,由(dx,dy)

Parameters
src Path: The path to add as a new contour
dx float: The amount to translate the path in X as it is added
dy float

addRect

Added in API level 1
void addRect (RectF rect, 
                Path.Direction dir)

向路径添加封闭的矩形轮廓

Parameters
rect RectF: The rectangle to add as a closed contour to the path
dir Path.Direction: The direction to wind the rectangle's contour

addRect

Added in API level 1
void addRect (float left, 
                float top, 
                float right, 
                float bottom, 
                Path.Direction dir)

向路径添加封闭的矩形轮廓

Parameters
left float: The left side of a rectangle to add to the path
top float: The top of a rectangle to add to the path
right float: The right side of a rectangle to add to the path
bottom float: The bottom of a rectangle to add to the path
dir Path.Direction: The direction to wind the rectangle's contour

addRoundRect

Added in API level 1
void addRoundRect (RectF rect, 
                float rx, 
                float ry, 
                Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓

Parameters
rect RectF: The bounds of a round-rectangle to add to the path
rx float: The x-radius of the rounded corners on the round-rectangle
ry float: The y-radius of the rounded corners on the round-rectangle
dir Path.Direction: The direction to wind the round-rectangle's contour

addRoundRect

Added in API level 21
void addRoundRect (float left, 
                float top, 
                float right, 
                float bottom, 
                float rx, 
                float ry, 
                Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓

Parameters
left float
top float
right float
bottom float
rx float: The x-radius of the rounded corners on the round-rectangle
ry float: The y-radius of the rounded corners on the round-rectangle
dir Path.Direction: The direction to wind the round-rectangle's contour

addRoundRect

Added in API level 1
void addRoundRect (RectF rect, 
                float[] radii, 
                Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓。 每个角落收到两个半径值[X,Y]。 角落的顺序是左上角,右上角,右下角,左下角

Parameters
rect RectF: The bounds of a round-rectangle to add to the path
radii float: Array of 8 values, 4 pairs of [X,Y] radii
dir Path.Direction: The direction to wind the round-rectangle's contour

addRoundRect

Added in API level 21
void addRoundRect (float left, 
                float top, 
                float right, 
                float bottom, 
                float[] radii, 
                Path.Direction dir)

向路径添加一个封闭的圆形矩形轮廓。 每个角落收到两个半径值[X,Y]。 角落的顺序是左上角,右上角,右下角,左下角

Parameters
left float
top float
right float
bottom float
radii float: Array of 8 values, 4 pairs of [X,Y] radii
dir Path.Direction: The direction to wind the round-rectangle's contour

arcTo

Added in API level 1
void arcTo (RectF oval, 
                float startAngle, 
                float sweepAngle, 
                boolean forceMoveTo)

将指定的弧作为新轮廓追加到路径中。 如果路径的起点与路径的当前最后一点不同,则会添加一个自动的lineTo(),以将当前轮廓连接到起点。 但是,如果路径为空,则我们使用弧的第一个点调用moveTo()。

Parameters
oval RectF: The bounds of oval defining shape and size of the arc
startAngle float: Starting angle (in degrees) where the arc begins
sweepAngle float: Sweep angle (in degrees) measured clockwise, treated mod 360.
forceMoveTo boolean: If true, always begin a new contour with the arc

arcTo

Added in API level 21
void arcTo (float left, 
                float top, 
                float right, 
                float bottom, 
                float startAngle, 
                float sweepAngle, 
                boolean forceMoveTo)

将指定的弧作为新轮廓追加到路径中。 如果路径的起点与路径的当前最后一点不同,则会添加一个自动的lineTo(),以将当前轮廓连接到起点。 但是,如果路径为空,则我们使用弧的第一个点调用moveTo()。

Parameters
left float
top float
right float
bottom float
startAngle float: Starting angle (in degrees) where the arc begins
sweepAngle float: Sweep angle (in degrees) measured clockwise, treated mod 360.
forceMoveTo boolean: If true, always begin a new contour with the arc

arcTo

Added in API level 1
void arcTo (RectF oval, 
                float startAngle, 
                float sweepAngle)

将指定的弧作为新轮廓追加到路径中。 如果路径的起点与路径的当前最后一点不同,则会添加一个自动的lineTo(),以将当前轮廓连接到起点。 但是,如果路径为空,则我们使用弧的第一个点调用moveTo()。

Parameters
oval RectF: The bounds of oval defining shape and size of the arc
startAngle float: Starting angle (in degrees) where the arc begins
sweepAngle float: Sweep angle (in degrees) measured clockwise

close

Added in API level 1
void close ()

关闭当前轮廓。 如果当前点不等于轮廓的第一个点,则会自动添加一个线段。

computeBounds

Added in API level 1
void computeBounds (RectF bounds, 
                boolean exact)

计算路径控制点的边界,并将答案写入边界。 如果路径包含0或1个点,则边界将设置为(0,0,0,0)

Parameters
bounds RectF: Returns the computed bounds of the path's control points.
exact boolean: This parameter is no longer used.

cubicTo

Added in API level 1
void cubicTo (float x1, 
                float y1, 
                float x2, 
                float y2, 
                float x3, 
                float y3)

接近控制点(x1,y1)和(x2,y2),结束于(x3,y3),添加一个三次贝塞尔曲线。 如果未对此轮廓执行moveTo()调用,则第一个点将自动设置为(0,0)。

Parameters
x1 float: The x-coordinate of the 1st control point on a cubic curve
y1 float: The y-coordinate of the 1st control point on a cubic curve
x2 float: The x-coordinate of the 2nd control point on a cubic curve
y2 float: The y-coordinate of the 2nd control point on a cubic curve
x3 float: The x-coordinate of the end point on a cubic curve
y3 float: The y-coordinate of the end point on a cubic curve

getFillType

Added in API level 1
Path.FillType getFillType ()

返回路径的填充类型。 这定义了如何计算“内部”。 默认值是WINDING。

Returns
Path.FillType the path's fill type

incReserve

Added in API level 1
void incReserve (int extraPtCount)

提示准备添加更多积分的路径。 这可以允许路径更有效地分配其存储。

Parameters
extraPtCount int: The number of extra points that may be added to this path

isConvex

Added in API level 21
boolean isConvex ()

返回路径的凸面,由路径的内容定义。

如果路径具有单个轮廓并且仅在单个方向上弯曲,则该路径是凸的。

该函数将从其控制点计算路径的凸性,并缓存结果。

Returns
boolean True if the path is convex.

isEmpty

Added in API level 1
boolean isEmpty ()

如果路径为空(不包含直线或曲线),则返回true

Returns
boolean true if the path is empty (contains no lines or curves)

isInverseFillType

Added in API level 1
boolean isInverseFillType ()

如果filltype是INVERSE变体之一,则返回true

Returns
boolean true if the filltype is one of the INVERSE variants

isRect

Added in API level 1
boolean isRect (RectF rect)

如果路径指定了矩形,则返回true。 如果是这样,并且如果rect不为空,则将rect设置为路径的边界。 如果路径未指定矩形,则返回false并忽略rect。

Parameters
rect RectF: If not null, returns the bounds of the path if it specifies a rectangle
Returns
boolean true if the path specifies a rectangle

lineTo

Added in API level 1
void lineTo (float x, 
                float y)

从最后一个点到指定点(x,y)添加一条线。 如果未对此轮廓执行moveTo()调用,则第一个点将自动设置为(0,0)。

Parameters
x float: The x-coordinate of the end of a line
y float: The y-coordinate of the end of a line

moveTo

Added in API level 1
void moveTo (float x, 
                float y)

将下一个轮廓的起点设置为点(x,y)。

Parameters
x float: The x-coordinate of the start of a new contour
y float: The y-coordinate of the start of a new contour

offset

Added in API level 1
void offset (float dx, 
                float dy, 
                Path dst)

(dx,dy)偏移路径

Parameters
dx float: The amount in the X direction to offset the entire path
dy float: The amount in the Y direction to offset the entire path
dst Path: The translated path is written here. If this is null, then the original path is modified.

offset

Added in API level 1
void offset (float dx, 
                float dy)

(dx,dy)偏移路径

Parameters
dx float: The amount in the X direction to offset the entire path
dy float: The amount in the Y direction to offset the entire path

op

Added in API level 19
boolean op (Path path1, 
                Path path2, 
                Path.Op op)

将此路径设置为将Op应用于两个指定路径的结果。 所得到的路径将由不重叠的轮廓构成。 在可能的情况下,曲线顺序会减小,因此立方体可能会变成二次曲面,而二次曲线可能会变成线条。

Parameters
path1 Path: The first operand (for difference, the minuend)
path2 Path: The second operand (for difference, the subtrahend)
op Path.Op
Returns
boolean True if operation succeeded, false otherwise and this path remains unmodified.

也可以看看:

op

Added in API level 19
boolean op (Path path, 
                Path.Op op)

将此路径设置为将Op应用于此路径和指定路径的结果。 所得到的路径将由不重叠的轮廓构成。 在可能的情况下,曲线顺序会减小,因此立方体可能会变成二次曲面,而二次曲线可能会变成线条。

Parameters
path Path: The second operand (for difference, the subtrahend)
op Path.Op
Returns
boolean True if operation succeeded, false otherwise and this path remains unmodified.

也可以看看:

quadTo

Added in API level 1
void quadTo (float x1, 
                float y1, 
                float x2, 
                float y2)

从最后一个点开始,接近控制点(x1,y1),结束于(x2,y2),添加一个二次贝塞尔曲线。 如果未对此轮廓执行moveTo()调用,则第一个点将自动设置为(0,0)。

Parameters
x1 float: The x-coordinate of the control point on a quadratic curve
y1 float: The y-coordinate of the control point on a quadratic curve
x2 float: The x-coordinate of the end point on a quadratic curve
y2 float: The y-coordinate of the end point on a quadratic curve

rCubicTo

Added in API level 1
void rCubicTo (float x1, 
                float y1, 
                float x2, 
                float y2, 
                float x3, 
                float y3)

与cubicTo相同,但坐标被视为相对于此轮廓上的当前点。 如果没有以前的点,则自动插入moveTo(0,0)。

Parameters
x1 float
y1 float
x2 float
y2 float
x3 float
y3 float

rLineTo

Added in API level 1
void rLineTo (float dx, 
                float dy)

与lineTo相同,但坐标相对于此轮廓上的最后一个点。 如果没有以前的点,则自动插入moveTo(0,0)。

Parameters
dx float: The amount to add to the x-coordinate of the previous point on this contour, to specify a line
dy float: The amount to add to the y-coordinate of the previous point on this contour, to specify a line

rMoveTo

Added in API level 1
void rMoveTo (float dx, 
                float dy)

将下一个轮廓的起点设置为相对于上一个轮廓上的最后一个点。 如果没有以前的轮廓,则将其视为与moveTo()相同。

Parameters
dx float: The amount to add to the x-coordinate of the end of the previous contour, to specify the start of a new contour
dy float: The amount to add to the y-coordinate of the end of the previous contour, to specify the start of a new contour

rQuadTo

Added in API level 1
void rQuadTo (float dx1, 
                float dy1, 
                float dx2, 
                float dy2)

与quadTo相同,但坐标相对于此轮廓上的最后一个点。 如果没有以前的点,则自动插入moveTo(0,0)。

Parameters
dx1 float: The amount to add to the x-coordinate of the last point on this contour, for the control point of a quadratic curve
dy1 float: The amount to add to the y-coordinate of the last point on this contour, for the control point of a quadratic curve
dx2 float: The amount to add to the x-coordinate of the last point on this contour, for the end point of a quadratic curve
dy2 float: The amount to add to the y-coordinate of the last point on this contour, for the end point of a quadratic curve

reset

Added in API level 1
void reset ()

清除路径中的所有线条和曲线,使其变为空白。 这不会改变填充类型设置。

rewind

Added in API level 1
void rewind ()

回滚路径:清除路径中的所有线条和曲线,但保留内部数据结构以加快重用。

set

Added in API level 1
void set (Path src)

将此内容替换为src的内容。

Parameters
src Path

setFillType

Added in API level 1
void setFillType (Path.FillType ft)

设置路径的填充类型。 这定义了如何计算“内部”。

Parameters
ft Path.FillType: The new fill type for this path

setLastPoint

Added in API level 1
void setLastPoint (float dx, 
                float dy)

设置路径的最后一个点。

Parameters
dx float: The new X coordinate for the last point
dy float: The new Y coordinate for the last point

toggleInverseFillType

Added in API level 1
void toggleInverseFillType ()

切换filltype的INVERSE状态

transform

Added in API level 1
void transform (Matrix matrix, 
                Path dst)

用矩阵变换这个路径中的点,并将答案写入dst。 如果dst为空,则修改原始路径。

Parameters
matrix Matrix: The matrix to apply to the path
dst Path: The transformed path is written here. If dst is null, then the the original path is modified

transform

Added in API level 1
void transform (Matrix matrix)

通过矩阵变换此路径中的点。

Parameters
matrix Matrix: The matrix to apply to the path

Protected methods

finalize

Added in API level 1
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize方法以处置系统资源或执行其他清理。

的常规协定finalize是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

Objectfinalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定的对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在针对某个对象调用了 finalize方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定对象,Java虚拟机从不会多次调用 finalize方法。

finalize方法抛出的任何异常 finalize导致此对象的终止被暂停,但是会被忽略。

Throws
Throwable

Hooray!