public class Path
extends Object
java.lang.Object | |
↳ | android.graphics.Path |
Path类封装了由直线段,二次曲线和三次曲线组成的复合(多轮廓)几何路径。 它可以用canvas.drawPath(path,paint)绘制,可以是填充或描边(基于绘制的样式),也可以用于剪裁或在路径上绘制文本。
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
|
Path (Path src)
创建一个新路径,从src路径复制内容。
Parameters | |
---|---|
src |
Path : The path to copy from when initializing the new path |
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 |
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 |
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 |
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 |
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 |
void addPath (Path src, Matrix matrix)
将一个src副本添加到由矩阵转换的路径中
Parameters | |
---|---|
src |
Path : The path to add as a new contour |
matrix |
Matrix
|
void addPath (Path src)
将src的副本添加到路径中
Parameters | |
---|---|
src |
Path : The path that is appended to the current path |
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
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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. |
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 |
Path.FillType getFillType ()
返回路径的填充类型。 这定义了如何计算“内部”。 默认值是WINDING。
Returns | |
---|---|
Path.FillType |
the path's fill type |
void incReserve (int extraPtCount)
提示准备添加更多积分的路径。 这可以允许路径更有效地分配其存储。
Parameters | |
---|---|
extraPtCount |
int : The number of extra points that may be added to this path |
boolean isConvex ()
返回路径的凸面,由路径的内容定义。
如果路径具有单个轮廓并且仅在单个方向上弯曲,则该路径是凸的。
该函数将从其控制点计算路径的凸性,并缓存结果。
Returns | |
---|---|
boolean |
True if the path is convex. |
boolean isEmpty ()
如果路径为空(不包含直线或曲线),则返回true
Returns | |
---|---|
boolean |
true if the path is empty (contains no lines or curves) |
boolean isInverseFillType ()
如果filltype是INVERSE变体之一,则返回true
Returns | |
---|---|
boolean |
true if the filltype is one of the INVERSE variants |
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 |
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 |
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 |
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. |
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 |
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. |
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. |
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 |
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
|
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 |
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 |
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 |
void setFillType (Path.FillType ft)
设置路径的填充类型。 这定义了如何计算“内部”。
Parameters | |
---|---|
ft |
Path.FillType : The new fill type for this path |
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 |
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 |
void transform (Matrix matrix)
通过矩阵变换此路径中的点。
Parameters | |
---|---|
matrix |
Matrix : The matrix to apply to the path |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定的对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对某个对象调用了 finalize
方法之后,在Java虚拟机再次确定不再有任何方法可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定对象,Java虚拟机从不会多次调用 finalize
方法。
finalize
方法抛出的任何异常 finalize
导致此对象的终止被暂停,但是会被忽略。
Throws | |
---|---|
Throwable |