帆布
public class Canvas
extends Object
java.lang.Object继承 | |
↳ | android.graphics.Canvas |
Canvas类保存“draw”调用。要画一些东西,你需要4个基本组件:一个位图来保存像素,一个Canvas来主持绘图调用(写入位图),一个绘图原语(如Rect,Path,text,Bitmap)和一个绘图(描述绘图的颜色和样式)。
开发者指南
有关如何使用Canvas的更多信息,请阅读 Canvas和Drawables开发人员指南。
概要
嵌套类 | |
---|---|
enum | Canvas.EdgeType 用作 |
enum | Canvas.VertexMode
|
常量 | |
---|---|
int | ALL_SAVE_FLAG restore()被调用时恢复所有内容(标准保存标志)。 |
int | CLIP_SAVE_FLAG 这个常量是在API级别26.使用过时的无支撑的版本 |
int | CLIP_TO_LAYER_SAVE_FLAG 该常数在API级别26中被废弃。该标志导致性能差,并且使用不同剪辑的单层或多个绘图命令可以实现相同的效果。 |
int | FULL_COLOR_LAYER_SAVE_FLAG 此常数在API级别26中已被弃用。此标志被忽略。使用无旗版本 |
int | HAS_ALPHA_LAYER_SAVE_FLAG 此常数在API级别26中已被弃用。此标志被忽略。使用无旗版本 |
int | MATRIX_SAVE_FLAG 这个常量是在API级别26.使用过时的无支撑的版本 |
字段 | |
---|---|
protected int | mDensity |
protected long | mNativeCanvasWrapper 应该只在构造函数中分配(或者如果软件画布是setBitmap),则可以通过NativeAllocation释放。 |
protected int | mScreenDensity 用于确定何时兼容性缩放有效。 |
公共建设者 | |
---|---|
Canvas() 构造一个空的光栅画布。 | |
Canvas(Bitmap bitmap) 构造一个带有指定位图绘制的画布。 |
公共方法 | |
---|---|
boolean | clipOutPath(Path path) 将剪辑设置为当前剪辑和指定路径的差异。 |
boolean | clipOutRect(int left, int top, int right, int bottom) 将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。 |
boolean | clipOutRect(Rect rect) 将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。 |
boolean | clipOutRect(float left, float top, float right, float bottom) 将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。 |
boolean | clipOutRect(RectF rect) 将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。 |
boolean | clipPath(Path path, Region.Op op) 这种方法比其它API级26 Region.Op值弃用 |
boolean | clipPath(Path path) 用指定的路径相交当前的剪辑。 |
boolean | clipRect(float left, float top, float right, float bottom, Region.Op op) 这种方法比其它API级26 Region.Op值弃用 |
boolean | clipRect(RectF rect) 用指定的矩形相交当前的剪辑,以局部坐标表示。 |
boolean | clipRect(Rect rect) 用指定的矩形相交当前的剪辑,以局部坐标表示。 |
boolean | clipRect(Rect rect, Region.Op op) 这种方法比其它API级26 Region.Op值弃用 |
boolean | clipRect(int left, int top, int right, int bottom) 用指定的矩形相交当前的剪辑,以局部坐标表示。 |
boolean | clipRect(float left, float top, float right, float bottom) 用指定的矩形相交当前的剪辑,以局部坐标表示。 |
boolean | clipRect(RectF rect, Region.Op op) 这种方法比其它API级26 Region.Op值弃用 |
void | concat(Matrix matrix) 用指定的矩阵预先计算当前矩阵。 |
void | drawARGB(int a, int r, int g, int b) 使用srcover porterduff模式,使用指定的ARGB颜色填充整个画布的位图(仅限于当前的剪辑)。 |
void | drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter,Paint paint) 绘制指定的弧,其将被缩放以适合指定的椭圆。 |
void | drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 绘制指定的弧,其将被缩放以适合指定的椭圆。 |
void | drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) 使用指定的矩阵绘制位图。 |
void | drawBitmap(int[] colors, int offset, int stride, float x, float y, int width, int height, boolean hasAlpha, Paintpaint) 在API级别21中不建议使用 |
void | drawBitmap(int[] colors, int offset, int stride, int x, int y, int width, int height, boolean hasAlpha, Paintpaint) 在API级别21中不建议使用 |
void | drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) 绘制指定的位图,自动缩放/翻译以填充目标矩形。 |
void | drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) 绘制指定的位图,自动缩放/翻译以填充目标矩形。 |
void | drawBitmap(Bitmap bitmap, float left, float top, Paint paint) 使用由当前矩阵转换的指定绘制,绘制指定的位图,其顶部/左侧角(x,y)。 |
void | drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshHeight, float[] verts, int vertOffset, int[] colors, int colorOffset, Paint paint) 通过网格绘制位图,网格顶点均匀分布在位图中。 |
void | drawCircle(float cx, float cy, float radius, Paint paint) 使用指定的油漆绘制指定的圆。 |
void | drawColor(int color) 使用srcover porterduff模式,使用指定的颜色填充整个画布的位图(仅限于当前的剪辑)。 |
void | drawColor(int color, PorterDuff.Mode mode) 使用指定的颜色和porter-duff xfermode填充整个画布的位图(限于当前的剪辑)。 |
void | drawLine(float startX, float startY, float stopX, float stopY, Paint paint) 使用指定的绘制绘制一个具有指定开始和停止x,y坐标的线段。 |
void | drawLines(float[] pts, int offset, int count, Paint paint) 画一系列线。 |
void | drawLines(float[] pts, Paint paint) |
void | drawOval(float left, float top, float right, float bottom, Paint paint) 使用指定的油漆绘制指定的椭圆。 |
void | drawOval(RectF oval, Paint paint) 使用指定的油漆绘制指定的椭圆。 |
void | drawPaint(Paint paint) 使用指定的颜色填充整个画布的位图(仅限于当前的剪辑)。 |
void | drawPatch(NinePatch patch, RectF dst, Paint paint) |
void | drawPatch(NinePatch patch, Rect dst, Paint paint) |
void | drawPath(Path path, Paint paint) 使用指定的颜色绘制指定的路径。 |
void | drawPicture(Picture picture, RectF dst) 绘制图片,拉伸以适应第d个矩形。 |
void | drawPicture(Picture picture) 保存画布状态,绘制图片,并恢复画布状态。 |
void | drawPicture(Picture picture, Rect dst) 绘制图片,拉伸以适应第d个矩形。 |
void | drawPoint(float x, float y, Paint paint) drawPoints()用于绘制单个点。 |
void | drawPoints(float[] pts, Paint paint) drawPoints()的助手,假定您要绘制整个数组 |
void | drawPoints(float[] pts, int offset, int count, Paint paint) 画一系列点。 |
void | drawPosText(String text, float[] pos, Paint paint) 此方法在API级别16中已弃用。此方法不支持字形组合和分解,因此不应用于复制脚本。它也不处理补充字符(例如表情符号)。 |
void | drawPosText(char[] text, int index, int count, float[] pos, Paint paint) 此方法在API级别16中已弃用。此方法不支持字形组合和分解,因此不应用于复制脚本。它也不处理补充字符(例如表情符号)。 |
void | drawRGB(int r, int g, int b) 使用srcover porterduff模式,使用指定的RGB颜色填充整个画布的位图(仅限于当前的剪辑)。 |
void | drawRect(float left, float top, float right, float bottom, Paint paint) 使用指定的绘图绘制指定的Rect。 |
void | drawRect(Rect r, Paint paint) 使用指定的绘图绘制指定的Rect。 |
void | drawRect(RectF rect, Paint paint) 使用指定的绘图绘制指定的Rect。 |
void | drawRoundRect(RectF rect, float rx, float ry, Paint paint) 使用指定的油漆绘制指定的圆弧。 |
void | drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint) 使用指定的油漆绘制指定的圆弧。 |
void | drawText(CharSequence text, int start, int end, float x, float y, Paint paint) 绘制指定范围的文本,由起始/终止指定,其起始位于(x,y),在指定的“绘画”中。 |
void | drawText(String text, float x, float y, Paint paint) 使用指定的油漆绘制文本,原点为(x,y)。 |
void | drawText(char[] text, int index, int count, float x, float y, Paint paint) 使用指定的油漆绘制文本,原点为(x,y)。 |
void | drawText(String text, int start, int end, float x, float y, Paint paint) 使用指定的油漆绘制文本,原点为(x,y)。 |
void | drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) 沿着指定的路径使用指定的油漆绘制原点(x,y)的文本。 |
void | drawTextOnPath(char[] text, int index, int count, Path path, float hOffset, float vOffset, Paint paint) 沿着指定的路径使用指定的油漆绘制原点(x,y)的文本。 |
void | drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount, float x, float y, boolean isRtl, Paint paint) 在一个方向上绘制一行文本,具有复杂文本整形的可选上下文。 |
void | drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd, float x, float y, boolean isRtl, Paint paint) 在一个方向上绘制一行文本,具有复杂文本整形的可选上下文。 |
void | drawVertices(Canvas.VertexMode mode, int vertexCount, float[] verts, int vertOffset, float[] texs, int texOffset, int[] colors, int colorOffset, short[] indices, int indexOffset, int indexCount, Paint paint) 绘制顶点数组,解释为三角形(基于模式)。 |
boolean | getClipBounds(Rect bounds) 返回bounds参数中当前剪辑的边界(在局部坐标中),如果非空,则返回true。 |
final Rect | getClipBounds() 检索当前剪辑的边界(在本地坐标中)。 |
int | getDensity() 返回画布的目标密度。 |
DrawFilter | getDrawFilter() |
int | getHeight() 返回当前绘图层的高度 |
void | getMatrix(Matrix ctm) 这种方法在API级别16中已被弃用。 |
finalMatrix | getMatrix() 这种方法在API级别16中已被弃用。 |
int | getMaximumBitmapHeight() 返回使用此画布绘制的位图的最大允许高度。 |
int | getMaximumBitmapWidth() 返回使用此画布绘制的位图的最大允许宽度。 |
int | getSaveCount() 返回Canvas私有堆栈上矩阵/剪辑状态的数量。 |
int | getWidth() 返回当前绘图层的宽度 |
boolean | isHardwareAccelerated() 指示此Canvas是否使用硬件加速。 |
boolean | isOpaque() 如果当前层吸收的设备是不透明的(即, |
boolean | quickReject(float left, float top, float right, float bottom, Canvas.EdgeType type) 如果指定的矩形在被当前矩阵变换之后将完全位于当前剪辑之外,则返回true。 |
boolean | quickReject(RectF rect, Canvas.EdgeType type) 如果指定的矩形在被当前矩阵变换之后将完全位于当前剪辑之外,则返回true。 |
boolean | quickReject(Path path, Canvas.EdgeType type) 如果指定的路径被当前矩阵转换后将完全位于当前剪辑之外,则返回true。 |
void | restore() 此调用平衡先前对save()的调用,并用于从上次保存调用后删除对矩阵/片段状态的所有修改。 |
void | restoreToCount(int saveCount) 高效的方式弹出保存计数之后发生的save()的所有调用到达saveCount。 |
void | rotate(float degrees) 用指定的旋转预先计算当前矩阵。 |
final void | rotate(float degrees, float px, float py) 用指定的旋转预先计算当前矩阵。 |
int | save(int saveFlags) 这个方法在API级别26中被废弃了 |
int | save() 将当前矩阵和剪辑保存到专用堆栈上。 |
int | saveLayer(RectF bounds, Paint paint, int saveFlags) 这个方法在API级别26中被废弃了 |
int | saveLayer(RectF bounds, Paint paint) 这与save()的行为相同,但是它还将绘图分配并重定向到屏幕外渲染目标。 |
int | saveLayer(float left, float top, float right, float bottom, Paint paint) 方便的 |
int | saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags) 这个方法在API级别26中被废弃了 |
int | saveLayerAlpha(float left, float top, float right, float bottom, int alpha, int saveFlags) 这个方法在API级别26中被废弃了 |
int | saveLayerAlpha(RectF bounds, int alpha) 方便 |
int | saveLayerAlpha(RectF bounds, int alpha, int saveFlags) 这个方法在API级别26中被废弃了 |
int | saveLayerAlpha(float left, float top, float right, float bottom, int alpha) 方便的 |
final void | scale(float sx, float sy, float px, float py) 以指定的比例预先计算当前矩阵。 |
void | scale(float sx, float sy) 以指定的比例预先计算当前矩阵。 |
void | setBitmap(Bitmap bitmap) 指定要绘制的画布的位图。 |
void | setDensity(int density) 指定此Canvas的支持位图的密度。 |
void | setDrawFilter(DrawFilter filter) |
void | setMatrix(Matrix matrix) 用指定的矩阵完全替换当前矩阵。 |
void | skew(float sx, float sy) 以指定的偏移量预先计算当前矩阵。 |
void | translate(float dx, float dy) 用指定的转换预先计算当前矩阵 |
受保护的方法 | |
---|---|
static final void | checkRange(int length, int offset, int count) |
void | throwIfCannotDraw(Bitmap bitmap) |
继承方法 | |
---|---|
从课堂上 java.lang.Object |
常量
ALL_SAVE_FLAG
int ALL_SAVE_FLAG
restore()被调用时恢复所有内容(标准保存标志)。
注意:出于性能原因,强烈建议将这个完整的标志传递给任何调用saveLayer()
和saveLayerAlpha()
变体。
注意:接受此标志的所有方法都具有等同于传递此标志的无标记版本。
常数值:31(0x0000001f)
CLIP_SAVE_FLAG
int CLIP_SAVE_FLAG
这个常量是在API级别26.不赞成
使用的无支撑的版本save()
,saveLayer(RectF, Paint)
或 saveLayerAlpha(RectF, int)
。对于saveLayer()调用,剪辑总是针对Hardware accelerated
画布进行还原,以及作为Build.VERSION_CODES.O
所有画布类型的默认行为的API级别。
在restore()被调用时还原当前的剪辑。
常数值:2(0x00000002)
CLIP_TO_LAYER_SAVE_FLAG
int CLIP_TO_LAYER_SAVE_FLAG
该常数在API级别26中被废弃。
该标志导致性能差,并且使用不同剪辑的单层或多个绘图命令可以实现相同的效果。
剪贴画到屏幕外层的边界,省略你自己的危险。
注意:强烈建议不要为任何调用saveLayer()
和 saveLayerAlpha()
变体省略此标志。不通过这个标志通常会引发硬件加速渲染的性能极差。
常数值:16(0x00000010)
FULL_COLOR_LAYER_SAVE_FLAG
int FULL_COLOR_LAYER_SAVE_FLAG
此常数在API级别26中已被弃用。
此标志被忽略。使用无旗版本saveLayer(RectF, Paint)
saveLayerAlpha(RectF, int)
。
该层需要每个颜色通道的完全8位精度。
常数值:8(0x00000008)
HAS_ALPHA_LAYER_SAVE_FLAG
int HAS_ALPHA_LAYER_SAVE_FLAG
此常数在API级别26中已被弃用。
此标志被忽略。使用无旗版本saveLayer(RectF, Paint)
saveLayerAlpha(RectF, int)
。
该层需要每像素Alpha通道。
常数值:4(0x00000004)
MATRIX_SAVE_FLAG
int MATRIX_SAVE_FLAG
这个常量是在API级别26.不赞成
使用的无支撑的版本save()
,saveLayer(RectF, Paint)
或 saveLayerAlpha(RectF, int)
。对于saveLayer()调用,矩阵总是针对Hardware accelerated
画布进行还原,以及作为Build.VERSION_CODES.O
所有画布类型的默认行为的API级别。
在restore()被调用时还原当前矩阵。
常数值:1(0x00000001)
字段
mDensity
int mDensity
mNativeCanvasWrapper
长mNativeCanvasWrapper
应该只在构造函数中分配(或者如果软件画布是setBitmap),则可以通过NativeAllocation释放。
mScreenDensity
int mScreenDensity
用于确定何时兼容性缩放有效。
公共建设者
帆布
画布(位图位图)
构造一个带有指定位图绘制的画布。位图必须是可变的。
画布的初始目标密度与给定位图的密度相同。
参数 | |
---|---|
bitmap | Bitmap :指定要绘制的画布的可变位图。 这个值永远不会 |
公共方法
clipOutPath
boolean clipOutPath(路径路径)
将剪辑设置为当前剪辑和指定路径的差异。
参数 | |
---|---|
path | Path :差异操作中使用的路径 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipOutRect
boolean clipOutRect(int left, int顶部, int对, int底部)
将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。
参数 | |
---|---|
left | int :在差异操作中使用的矩形的左侧 |
top | int :在差异操作中使用的矩形的顶部 |
right | int :在差异操作中使用的矩形右侧 |
bottom | int :在差异操作中使用矩形的底部 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipOutRect
boolean clipOutRect(Rect rect)
将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。
参数 | |
---|---|
rect | Rect :用当前剪辑执行差异的矩形。 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipOutRect
boolean clipOutRect(float left, 浮动顶部, 浮动右 浮底)
将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。
参数 | |
---|---|
left | float :在差异操作中使用的矩形的左侧 |
top | float :在差异操作中使用的矩形的顶部 |
right | float :在差异操作中使用的矩形右侧 |
bottom | float :在差异操作中使用矩形的底部 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipOutRect
boolean clipOutRect(RectF rect)
将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。
参数 | |
---|---|
rect | RectF :用当前剪辑执行差异的矩形。 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipPath
boolean clipPath(Path path, Region.Op op)
这种方法是在API级26弃用
比其他Region.Op值INTERSECT
和 DIFFERENCE
具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipPath(Path)
和 clipOutPath(Path)
;
使用指定的路径修改当前的剪辑。
参数 | |
---|---|
path | Path :在当前剪辑上操作的路径 这个值永远不会 |
op | Region.Op :剪辑如何修改 这个值永远不会 |
返回 | |
---|---|
boolean | 如果结果为非空,则为true |
clipPath
布尔clipPath(路径路径)
用指定的路径相交当前的剪辑。
参数 | |
---|---|
path | Path :与当前剪辑相交的路径 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipRect
boolean clipRect(float left, 浮动顶部, 浮动右 浮底, 区域开放)
这种方法是在API级26弃用
比其他Region.Op值INTERSECT
和 DIFFERENCE
具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(float, float, float, float)
和 clipOutRect(float, float, float, float)
;
使用指定的矩形修改当前的剪辑,以本地坐标表示。
参数 | |
---|---|
left | float :与当前剪辑相交的矩形左侧 |
top | float :与当前剪辑相交的矩形的顶部 |
right | float :与当前剪辑相交的矩形右侧 |
bottom | float :与当前剪辑相交的矩形的底部 |
op | Region.Op :剪辑如何修改 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipRect
boolean clipRect(RectF rect)
用指定的矩形相交当前的剪辑,以局部坐标表示。
参数 | |
---|---|
rect | RectF :与当前剪辑相交的矩形。 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipRect
boolean clipRect(Rect rect)
用指定的矩形相交当前的剪辑,以局部坐标表示。
参数 | |
---|---|
rect | Rect :与当前剪辑相交的矩形。 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipRect
boolean clipRect(Rect rect, Region.Op op)
这种方法是在API级26弃用
比其他Region.Op值INTERSECT
和 DIFFERENCE
具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(Rect)
和clipOutRect(Rect)
;
使用指定的矩形修改当前的剪辑,以本地坐标表示。
参数 | |
---|---|
rect | Rect :与当前剪辑相交的矩形。 这个值永远不会 |
op | Region.Op :剪辑如何修改 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipRect
boolean clipRect(int left, int顶部, int对, int底部)
用指定的矩形相交当前的剪辑,以局部坐标表示。
参数 | |
---|---|
left | int :与当前剪辑相交的矩形左侧 |
top | int :与当前剪辑相交的矩形的顶部 |
right | int :与当前剪辑相交的矩形右侧 |
bottom | int :与当前剪辑相交的矩形的底部 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipRect
boolean clipRect(float left, 浮动顶部, 浮动右 浮底)
用指定的矩形相交当前的剪辑,以局部坐标表示。
参数 | |
---|---|
left | float :与当前剪辑相交的矩形左侧 |
top | float :与当前剪辑相交的矩形的顶部 |
right | float :与当前剪辑相交的矩形右侧 |
bottom | float :与当前剪辑相交的矩形的底部 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
clipRect
boolean clipRect(RectF rect, Region.Op op)
这种方法是在API级26弃用
比其他Region.Op值INTERSECT
和 DIFFERENCE
具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(RectF)
和clipOutRect(RectF)
;
使用指定的矩形修改当前的剪辑。
参数 | |
---|---|
rect | RectF :与当前剪辑相交的rect 这个值永远不会 |
op | Region.Op :剪辑如何修改 这个值永远不会 |
返回 | |
---|---|
boolean | 如果生成的剪辑不为空,则为true |
CONCAT
void concat(矩阵矩阵)
用指定的矩阵预先计算当前矩阵。如果指定的矩阵为空,则此方法不执行任何操作。
参数 | |
---|---|
matrix | Matrix :预先连接当前矩阵的矩阵 该值可能是 |
drawARGB
void drawARGB(int a, int r, int g, int b)
使用srcover porterduff模式,使用指定的ARGB颜色填充整个画布的位图(仅限于当前的剪辑)。
参数 | |
---|---|
a | int :绘制画布上颜色的alpha组件(0..255) |
r | int :将颜色的红色成分(0..255)绘制到画布上 |
g | int :将绿色组件(0..255)的颜色绘制到画布上 |
b | int :蓝色组件(0..255)的颜色要画在画布上 |
drawArc
void drawArc(float left, 浮动顶部, 浮动右 浮底, float startAngle, 浮动扫掠, 布尔使用中心, 油漆漆)
绘制指定的弧,其将被缩放以适合指定的椭圆。
如果起始角度为负或> = 360,起始角度被视为起始角度模数360。
如果扫掠角度> 360°,则椭圆形被完全绘制。请注意,这与SkPath :: arcTo略有不同,它将扫描角度视为360度。如果扫描角度为负,则扫描角度被视为360度扫描角度
弧线顺时针拉伸。0度的角度对应于0度(手表3点钟)的几何角度。
参数 | |
---|---|
left | float |
top | float |
right | float |
bottom | float |
startAngle | float :弧开始的起始角度(以度为单位) |
sweepAngle | float :顺时针测量扫描角度(以度为单位) |
useCenter | boolean :如果为真,请将椭圆的中心包含在圆弧中,如果正在抚摸,则关闭它。这将画一个楔子 |
paint | Paint :用来画弧的油漆 这个值永远不会 |
drawArc
void drawArc(RectF oval, float startAngle, 浮动扫掠, 布尔使用中心, 油漆漆)
绘制指定的弧,其将被缩放以适合指定的椭圆。
如果起始角度为负或> = 360,起始角度被视为起始角度模数360。
如果扫掠角度> 360°,则椭圆形被完全绘制。请注意,这与SkPath :: arcTo略有不同,它将扫描角度视为360度。如果扫描角度为负,则扫描角度被视为360度扫描角度
弧线顺时针拉伸。0度的角度对应于0度(手表3点钟)的几何角度。
参数 | |
---|---|
oval | RectF :用于定义圆弧形状和大小的椭圆形边界 这个值永远不会 |
startAngle | float :弧开始的起始角度(以度为单位) |
sweepAngle | float :顺时针测量扫描角度(以度为单位) |
useCenter | boolean :如果为真,请将椭圆的中心包含在圆弧中,如果正在抚摸,则关闭它。这将画一个楔子 |
paint | Paint :用来画弧的油漆 这个值永远不会 |
drawBitmap
void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)
使用指定的矩阵绘制位图。
参数 | |
---|---|
bitmap | Bitmap :绘制位图 这个值永远不会 |
matrix | Matrix :绘制时用于转换位图的矩阵 这个值永远不会 |
paint | Paint :可能为null。油漆用来绘制位图 |
drawBitmap
void drawBitmap(int [] colors, int offset, 大步走 浮动x, 浮动y, int width, int高度, 布尔hasAlpha, 油漆漆)
在API级别21中不建议
使用hardware accelerated
此方法。每次调用此方法时,画布的用法都需要内部的颜色缓冲区内容副本。使用位图可避免此复制,并允许应用程序更明确地控制像素数据的生命周期和副本。
将指定的颜色数组视为位图,并绘制它。这样做与第一次从数组中创建位图,然后绘制它相同的结果,但是这种方法避免了明确地创建一个位图对象,如果颜色经常变化可以更有效。
参数 | |
---|---|
colors | int :表示位图像素的颜色数组 这个值永远不会 |
offset | int :偏移到第一个像素的数组的颜色 |
stride | int :行之间数组中的颜色数(必须> = width或<= -width)。 |
x | float :绘制位图的X坐标 |
y | float :绘制位图的Y坐标 |
width | int :位图的宽度 |
height | int :位图的高度 |
hasAlpha | boolean :如果颜色的alpha通道包含有效值,则为真。如果为false,则忽略Alpha字节(对于每个像素,假定为0xFF)。 |
paint | Paint :可能为null。油漆用来绘制位图 |
drawBitmap
void drawBitmap(int [] colors, int offset, 大步走 int x, int和, int width, int高度, 布尔hasAlpha, 油漆漆)
在API级别21中不建议
使用hardware accelerated
此方法。每次调用此方法时,画布的用法都需要内部的颜色缓冲区内容副本。使用位图可避免此复制,并允许应用程序更明确地控制像素数据的生命周期和副本。
drawBitmap(int [] colors,...)的旧版本,它为x,y采用ints
参数 | |
---|---|
colors | int 这个值永远不会 |
offset | int |
stride | int |
x | int |
y | int |
width | int |
height | int |
hasAlpha | boolean |
paint | Paint 该值可能是 |
drawBitmap
void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
绘制指定的位图,自动缩放/翻译以填充目标矩形。如果源矩形不为空,则它指定要绘制的位图的子集。
注意:如果paint包含一个maskfilter,它生成一个扩展到位图原始宽度/高度之外的掩码(例如BlurMaskFilter),那么位图将被绘制为具有CLAMP模式的着色器。因此,原始宽度/高度之外的颜色将被复制的边缘颜色。
此函数忽略与位图关联的密度。这是因为源和目标矩形坐标空间处于各自的密度,所以必须已经应用了适当的缩放因子。
参数 | |
---|---|
bitmap | Bitmap :要绘制的位图 这个值永远不会 |
src | Rect :可能为null。要绘制的位图的子集 |
dst | Rect :位图将被缩放/翻译以适应的矩形 这个值永远不会 |
paint | Paint :可能为null。油漆用来绘制位图 |
drawBitmap
void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
绘制指定的位图,自动缩放/翻译以填充目标矩形。如果源矩形不为空,则它指定要绘制的位图的子集。
注意:如果paint包含一个maskfilter,它生成一个扩展到位图原始宽度/高度之外的掩码(例如BlurMaskFilter),那么位图将被绘制为具有CLAMP模式的着色器。因此,原始宽度/高度之外的颜色将被复制的边缘颜色。
此函数忽略与位图关联的密度。这是因为源和目标矩形坐标空间处于各自的密度,所以必须已经应用了适当的缩放因子。
参数 | |
---|---|
bitmap | Bitmap :要绘制的位图 这个值永远不会 |
src | Rect :可能为null。要绘制的位图的子集 |
dst | RectF :位图将被缩放/翻译以适应的矩形 这个值永远不会 |
paint | Paint :可能为null。油漆用来绘制位图 |
drawBitmap
void drawBitmap(Bitmap bitmap, 浮动左 浮动顶部, 油漆漆)
使用由当前矩阵转换的指定绘制,绘制指定的位图,其顶部/左侧角(x,y)。
注意:如果paint包含一个maskfilter,它生成一个扩展到位图原始宽度/高度之外的掩码(例如BlurMaskFilter),那么位图将被绘制为具有CLAMP模式的着色器。因此,原始宽度/高度之外的颜色将被复制的边缘颜色。
如果位图和画布具有不同的密度,则此功能将自动缩放位图,使其与画布的密度相同。
参数 | |
---|---|
bitmap | Bitmap :要绘制的位图 这个值永远不会 |
left | float :绘制位图左侧的位置 |
top | float :正在绘制位图的顶端的位置 |
paint | Paint :用于绘制位图的绘图(可能为null) |
drawBitmapMesh
void drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshHeight, float [] verts, int vertOffset, int []颜色, int colorOffset, 油漆漆)
通过网格绘制位图,网格顶点均匀分布在位图中。横向有meshWidth + 1个顶点,并且meshHeight + 1个顶点向下。以row-major顺序访问verts数组,使第一个meshWidth + 1个顶点从左到右分布在位图的顶部。此方法的更一般版本是drawVertices()。
参数 | |
---|---|
bitmap | Bitmap :使用网格绘制的位图 这个值永远不会 |
meshWidth | int :网格中的列数。如果这是0,没有任何东西 |
meshHeight | int :网格中的行数。如果这是0,没有任何东西 |
verts | float :x,y对的数组,指定应绘制网格的位置。数组中必须至少有(meshWidth + 1)*(meshHeight + 1)* 2 + vertOffset值 这个值永远不会 |
vertOffset | int :绘制之前要跳过的verts元素数 |
colors | int :可能为null。指定每个顶点处的颜色,该颜色在单元格之间插值,并将其值乘以相应的位图颜色。如果不为空,则数组中必须至少有(meshWidth + 1)*(meshHeight + 1)+ colorOffset值。 |
colorOffset | int :绘制前要跳过的颜色元素数 |
paint | Paint :可能为null。油漆用来绘制位图 |
画圆
void drawCircle(float cx, 浮球, 浮动半径, 油漆漆)
使用指定的油漆绘制指定的圆。如果radius <= 0,则不会绘制任何内容。根据油漆中的样式,圆圈将被填充或框架。
参数 | |
---|---|
cx | float :要绘制的圆环的中心的x坐标 |
cy | float :要绘制的圆环的中心的y坐标 |
radius | float :要绘制的圆环的半径 |
paint | Paint 画画用来画圆 这个值永远不会 |
drawColor
void drawColor(int color)
使用srcover porterduff模式,使用指定的颜色填充整个画布的位图(仅限于当前的剪辑)。
参数 | |
---|---|
color | int :画在画布上的颜色 |
drawColor
void drawColor(int color, PorterDuff.Mode mode)
使用指定的颜色和porter-duff xfermode填充整个画布的位图(限于当前的剪辑)。
参数 | |
---|---|
color | int :画的颜色 |
mode | PorterDuff.Mode :搬运工模式适用于颜色 这个值永远不会 |
的drawLine
void drawLine(float startX, 浮动startY, 浮动挡X, 浮动stopY, 油漆漆)
使用指定的绘制绘制一个具有指定开始和停止x,y坐标的线段。
请注意,由于线条总是“框架”,所以在画面中忽略样式。
退化线(长度为0)不会绘制。
参数 | |
---|---|
startX | float :行的起始点的x坐标 |
startY | float :线的起点的y坐标 |
stopX | float |
stopY | float |
paint | Paint 油漆用来画线 这个值永远不会 |
画线
void drawLines(float [] pts, int offset, int计数, 油漆漆)
画一系列线。每行都取自pts数组中的4个连续值。因此,绘制1行时,数组必须至少包含4个值。这在逻辑上与绘制数组相同:drawLine(pts [0],pts [1],pts [2],pts [3]),后跟drawLine(pts [4],pts [5],pts [ 6],pts [7])等。
参数 | |
---|---|
pts | float :绘制点阵数[x0 y0 x1 y1 x2 y2 ...] 这个值永远不会 |
offset | int :绘制前要跳过的数组中的数值。 |
count | int :数组中要处理的值的数量,跳过“偏移量”之后。由于每行使用4个值,因此绘制的“行”数真的是(count >> 2)。 |
paint | Paint 油漆用来画点 这个值永远不会 |
画线
void drawLines(float [] pts, Paint paint)
参数 | |
---|---|
pts | float 这个值永远不会 |
paint | Paint 这个值永远不会 |
drawOval
void drawOval(float left, 浮动顶部, 浮动右 浮底, 油漆漆)
使用指定的油漆绘制指定的椭圆。椭圆形将根据油漆中的样式填充或框架。
参数 | |
---|---|
left | float |
top | float |
right | float |
bottom | float |
paint | Paint 这个值永远不会 |
drawOval
无效drawOval(RectF椭圆形, 油漆涂料)
使用指定的油漆绘制指定的椭圆。椭圆形将根据油漆中的样式填充或框架。
参数 | |
---|---|
oval | RectF :要绘制的椭圆的矩形边界 这个值永远不会 |
paint | Paint 这个值永远不会 |
drawPaint
void drawPaint(油漆)
使用指定的颜色填充整个画布的位图(仅限于当前的剪辑)。使用指定的绘制绘制无限大的矩形,这是相当的(但更快)。
参数 | |
---|---|
paint | Paint :用来画在画布上的油漆 这个值永远不会 |
drawPatch
void drawPatch(NinePatch patch, RectF dst, Paint paint)
参数 | |
---|---|
patch | NinePatch 这个值永远不会 |
dst | RectF 这个值永远不会 |
paint | Paint 该值可能是 |
drawPatch
void drawPatch(NinePatch patch, Rect dst, Paint paint)
参数 | |
---|---|
patch | NinePatch 这个值永远不会 |
dst | Rect 这个值永远不会 |
paint | Paint 该值可能是 |
drawPath
void drawPath(Path path, Paint paint)
使用指定的颜色绘制指定的路径。该路径将根据油漆中的“样式”填充或框架。
参数 | |
---|---|
path | Path 要绘制的路径 这个值永远不会 |
paint | Paint :用来绘制路径的油漆 这个值永远不会 |
drawPicture
void drawPicture(Picture picture, RectF dst)
绘制图片,拉伸以适应第d个矩形。
参数 | |
---|---|
picture | Picture 这个值永远不会 |
dst | RectF 这个值永远不会 |
drawPicture
void drawPicture(Picture picture)
保存画布状态,绘制图片,并恢复画布状态。这与picture.draw(canvas)不同,后者不执行任何保存/恢复。
注意:这将强制图片内部呼叫 endRecording()
,以准备播放。
参数 | |
---|---|
picture | Picture :要画的图片 这个值永远不会 |
drawPicture
void drawPicture(Picture picture, Rect dst)
绘制图片,拉伸以适应第d个矩形。
参数 | |
---|---|
picture | Picture 这个值永远不会 |
dst | Rect 这个值永远不会 |
drawPoint
void drawPoint(float x, 浮动y, 油漆漆)
drawPoints()用于绘制单个点。
参数 | |
---|---|
x | float |
y | float |
paint | Paint 这个值永远不会 |
drawPoints
void drawPoints(float [] pts, Paint paint)
drawPoints()的助手,假定您要绘制整个数组
参数 | |
---|---|
pts | float 这个值永远不会 |
paint | Paint 这个值永远不会 |
drawPoints
void drawPoints(float [] pts, int offset, int计数, 油漆漆)
画一系列点。每个点都位于由pts []指定的坐标上,其直径由油漆的笔画宽度(由画布“CTM”转换)指定,对于笔画宽度为0的特殊处理,它总是正好绘制1个像素或者如果启用抗锯齿,则最多为4)。点的形状由油漆的盖型控制。形状是一个正方形,除非帽子类型是圆形,在这种情况下,形状是圆形。
参数 | |
---|---|
pts | float :绘制点阵数[x0 y0 x1 y1 x2 y2 ...] |
offset | int :开始绘制前要跳过的数值。 |
count | int :在跳过偏移量之后要处理的值的数量。由于一个点使用两个值,所绘制的“点”的数量真的是(count >> 1)。 |
paint | Paint 油漆用来画点 这个值永远不会 |
drawPosText
void drawPosText(String text, float [] pos, 油漆漆)
此方法在API级别16中已弃用。
此方法不支持字形组合和分解,因此不应用于复制脚本。它也不处理补充字符(例如表情符号)。
绘制数组中的文本,每个字符的起始点由pos数组指定。
参数 | |
---|---|
text | String :要绘制的文字 这个值永远不会 |
pos | float :用于定位每个字符的[x,y]位置的数组 这个值永远不会 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
drawPosText
void drawPosText(char [] text, int索引, int计数, float [] pos, 油漆漆)
此方法在API级别16中已弃用。
此方法不支持字形组合和分解,因此不应用于复制脚本。它也不处理补充字符(例如表情符号)。
绘制数组中的文本,每个字符的起始点由pos数组指定。
参数 | |
---|---|
text | char :要绘制的文字 这个值永远不会 |
index | int :绘制第一个字符的索引 |
count | int :从索引开始绘制的字符数。 |
pos | float :用于定位每个字符的[x,y]位置的数组 这个值永远不会 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
drawRGB
void drawRGB(int r, int g, int b)
使用srcover porterduff模式,使用指定的RGB颜色填充整个画布的位图(仅限于当前的剪辑)。
参数 | |
---|---|
r | int :将颜色的红色成分(0..255)绘制到画布上 |
g | int :将绿色组件(0..255)的颜色绘制到画布上 |
b | int :蓝色组件(0..255)的颜色要画在画布上 |
的drawRect
void drawRect(float left, 浮动顶部, 浮动右 浮底, 油漆漆)
使用指定的绘图绘制指定的Rect。矩形将根据油漆中的样式填充或框架。
参数 | |
---|---|
left | float :要绘制的矩形的左侧 |
top | float :要绘制的矩形的顶端 |
right | float :要绘制的矩形的右侧 |
bottom | float :要绘制的矩形的底部 |
paint | Paint :用来画直角的油漆 这个值永远不会 |
的drawRect
void drawRect(Rect r, Paint paint)
使用指定的绘图绘制指定的Rect。矩形将根据油漆中的样式填充或框架。
参数 | |
---|---|
r | Rect :要绘制的矩形。 这个值永远不会 |
paint | Paint :用来绘制矩形的油漆 这个值永远不会 |
的drawRect
void drawRect(RectF rect, Paint paint)
使用指定的绘图绘制指定的Rect。矩形将根据油漆中的样式填充或框架。
参数 | |
---|---|
rect | RectF :要画的矩形 这个值永远不会 |
paint | Paint :用来画直角的油漆 这个值永远不会 |
drawRoundRect
void drawRoundRect(RectF rect, float rx, 浮动ry, 油漆漆)
使用指定的油漆绘制指定的圆弧。根据油漆中的风格,圆形将被填充或框架。
参数 | |
---|---|
rect | RectF :要绘制的roundRect的矩形边界 这个值永远不会 |
rx | float :用于圆角的椭圆的x半径 |
ry | float :用于圆角的椭圆的y半径 |
paint | Paint :用来绘制圆形的油漆 这个值永远不会 |
drawRoundRect
void drawRoundRect(float left, 浮动顶部, 浮动右 浮底, float rx, 浮动ry, 油漆漆)
使用指定的油漆绘制指定的圆弧。根据油漆中的风格,圆形将被填充或框架。
参数 | |
---|---|
left | float |
top | float |
right | float |
bottom | float |
rx | float :用于圆角的椭圆的x半径 |
ry | float :用于圆角的椭圆的y半径 |
paint | Paint :用来绘制圆形的油漆 这个值永远不会 |
的drawText
void drawText(CharSequence text, int开始, int结束, 浮动x, 浮动y, 油漆漆)
绘制指定范围的文本,由起始/终止指定,其起始位于(x,y),在指定的“绘画”中。基于油漆中的对齐设置来解释原点。
参数 | |
---|---|
text | CharSequence :要绘制的文字 这个值永远不会 |
start | int :要绘制的文本中的第一个字符的索引 |
end | int :(end-1)是要绘制的文本中的最后一个字符的索引 |
x | float :用于绘制文本的原点的x坐标 |
y | float :用于绘制文本的原点的y坐标 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
的drawText
void drawText(String text, 浮动x, 浮动y, 油漆漆)
使用指定的油漆绘制文本,原点为(x,y)。根据油漆中的对齐设置对原点进行解释。
参数 | |
---|---|
text | String :要绘制的文字 这个值永远不会 |
x | float :正在绘制的文本的原点的x坐标 |
y | float :正在绘制的文本的基线的y坐标 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
的drawText
void drawText(char [] text, int索引, int计数, 浮动x, 浮动y, 油漆漆)
使用指定的油漆绘制文本,原点为(x,y)。根据油漆中的对齐设置对原点进行解释。
参数 | |
---|---|
text | char :要绘制的文字 这个值永远不会 |
index | int |
count | int |
x | float :正在绘制的文本的原点的x坐标 |
y | float :正在绘制的文本的基线的y坐标 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
的drawText
void drawText(String text, int开始, int结束, 浮动x, 浮动y, 油漆漆)
使用指定的油漆绘制文本,原点为(x,y)。根据油漆中的对齐设置对原点进行解释。
参数 | |
---|---|
text | String :要绘制的文字 这个值永远不会 |
start | int :要绘制的文本中的第一个字符的索引 |
end | int :(end-1)是要绘制的文本中的最后一个字符的索引 |
x | float :正在绘制的文本的原点的x坐标 |
y | float :正在绘制的文本的基线的y坐标 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
drawTextOnPath
void drawTextOnPath(String text, Path path, float hOffset, float vOffset, 油漆漆)
沿着指定的路径使用指定的油漆绘制原点(x,y)的文本。油漆的“对齐”设置确定了开始文本的路径。
参数 | |
---|---|
text | String :要绘制的文字 这个值永远不会 |
path | Path :文本应该遵循的路径为其基线 这个值永远不会 |
hOffset | float :沿路径的距离添加到文本的起始位置 |
vOffset | float :( - )或以下的距离(+)定位文本的路径 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
drawTextOnPath
void drawTextOnPath(char [] text, int索引, int计数, 路径路径, float hOffset, float vOffset, 油漆漆)
沿着指定的路径使用指定的油漆绘制原点(x,y)的文本。油漆的“对齐”设置确定了开始文本的路径。
参数 | |
---|---|
text | char :要绘制的文字 这个值永远不会 |
index | int |
count | int |
path | Path :文本应该遵循的路径为其基线 这个值永远不会 |
hOffset | float :沿路径的距离添加到文本的起始位置 |
vOffset | float :( - )或以下的距离(+)定位文本的路径 |
paint | Paint :用于文本的颜色(如颜色,大小,样式) 这个值永远不会 |
drawTextRun
void drawTextRun(char [] text, int索引, int计数, int contextIndex, int contextCount, 浮动x, 浮动y, boolean isRtl, 油漆漆)
在一个方向上绘制一行文本,具有复杂文本整形的可选上下文。
查看drawTextRun(CharSequence, int, int, int, int, float, float, boolean, Paint)
更多详情。此方法使用字符数组而不是CharSequence来表示字符串。而且,与drawText(char[], int, int, float, float, Paint)
在该方法中建立的模式一致,count
并且contextCount
被使用而不是结束位置的偏移; count = end - start, contextCount = contextEnd - contextStart
。
参数 | |
---|---|
text | char :要呈现的文字 这个值永远不会 |
index | int :文本的开始渲染 |
count | int :要渲染的字符数 |
contextIndex | int :形成的上下文的开始。必须不大于索引。 |
contextCount | int :用于整形的上下文中的字符数。contexIndex + contextCount必须不小于index + count。 |
x | float :绘制文本的x位置 |
y | float :绘制文本的y位置 |
isRtl | boolean :运行是否在RTL方向 |
paint | Paint :油漆 这个值永远不会 |
drawTextRun
void drawTextRun(CharSequence text, int开始, int结束, int contextStart, int contextEnd, 浮动x, 浮动y, boolean isRtl, 油漆漆)
在一个方向上绘制一行文本,具有复杂文本整形的可选上下文。
文本的运行包括从字符start
到end
文本。此外,该范围contextStart
以contextEnd
被用作上下文,用于复杂文本整形的目的,如潜在不同的形状根据其旁边的文本阿拉伯语的文本。
超出范围的所有文本都将contextStart..contextEnd
被忽略。之间的文本 start
,并end
会进行布局和绘制。
运行的方向由明确指定isRtl
。因此,该方法仅适用于单个方向的运行。文本的对齐方式由Paint的TextAlign值确定。此外,0 <= contextStart <= start <= end <= contextEnd <= text.length
必须坚持进入。
另请参见getRunAdvance(char[], int, int, int, int, boolean, int)
相应的方法来测量文本; 绘制文本的前进宽度与从该方法获得的值相匹配。
参数 | |
---|---|
text | CharSequence :要呈现的文字 这个值永远不会 |
start | int :文本的开始渲染。此位置之前的数据可用于形成上下文。 |
end | int :要渲染的文本的结尾。此位置之前或之后的数据可用于形成上下文。 |
contextStart | int :形成上下文开始的索引 |
contextEnd | int :整形上下文结束的索引 |
x | float :绘制文本的x位置 |
y | float :绘制文本的y位置 |
isRtl | boolean :运行是否在RTL方向 |
paint | Paint :油漆 这个值永远不会 |
drawVertices
void drawVertices(Canvas.VertexMode mode, int vertexCount, float [] verts, int vertOffset, float [] texs, int texOffset, int []颜色, int colorOffset, 短[]指数, int indexOffset, int indexCount, 油漆漆)
绘制顶点数组,解释为三角形(基于模式)。verts数组是必需的,并指定每个顶点的x,y对。如果tex是非空的,那么它用于指定在每个顶点使用的着色器坐标中的坐标(在这种情况下,油漆必须有着色器)。如果没有texs数组,但是有一个颜色数组,那么每个颜色都会在其对应的三角形中以渐变方式插值。如果tex和颜色数组都存在,那么它们的行为就像以前一样,但是每个像素的结果颜色是将着色器和颜色渐变颜色相乘的结果。indices数组是可选的,但如果存在,则用于指定每个三角形的索引,而不是按顺序遍历数组。
参数 | |
---|---|
mode | Canvas.VertexMode :如何解释顶点数组 这个值永远不会 |
vertexCount | int :顶点数组中的值的数量(如果为非空,则为相应的texs和颜色数组)。每个逻辑顶点是两个值(x,y),vertexCount必须是2的倍数。 |
verts | float :网格的顶点数组 这个值永远不会 |
vertOffset | int :绘制之前要跳过的窗口中的值的数量。 |
texs | float :可能为null。如果不为空,则指定要采样到当前着色器中的坐标(例如位图图块或渐变) |
texOffset | int :绘制之前要跳过的tex中的值的数量。 |
colors | int :可能为null。如果不为空,则为每个顶点指定要在三角形内插的颜色。 |
colorOffset | int :绘制前要跳过的颜色值的数量。 |
indices | short :如果不为null,则要引用到顶点的数组(texs,colors)数组。 |
indexOffset | int |
indexCount | int :索引数组中的条目数(如果不为空)。 |
paint | Paint :指定要使用的着色器,如果texs数组不为空。 |
getClipBounds
boolean getClipBounds(Rect bounds)
返回bounds参数中当前剪辑的边界(在局部坐标中),如果非空,则返回true。这可以以类似于quickReject的方式有用,因为它告诉您,在这些边界之外的绘图将被剪切出来。
参数 | |
---|---|
bounds | Rect :在这里返回剪辑边界。如果它为空,则忽略它,但如果当前剪辑不为空,则仍返回true。 |
返回 | |
---|---|
boolean | 如果当前剪辑不为空,则为true。 |
getClipBounds
Rect getClipBounds()
检索当前剪辑的边界(在本地坐标中)。
返回 | |
---|---|
Rect | 剪辑限制,或者如果剪辑为空,则为[0,0,0,0]。 这个值永远不会 |
getDensity
int getDensity()
返回画布的目标密度。默认密度来自其支持位图的密度,或者DENSITY_NONE
如果没有密度 。
返回 | |
---|---|
int | 返回画布的当前目标密度,用于在绘制位图时确定缩放因子。 |
也可以看看:
getMatrix
void getMatrix(Matrix ctm)
这种方法在API级别16中已被弃用。
Hardware accelerated
当传递给View或Drawable时,画布可能具有任何矩阵,因为它是在层次结构中定义的实现方式,因此可以创建这样的画布。在这种情况下,推荐在不考虑当前矩阵的情况下绘制内容,或者跟踪画布外的相关变换状态。
返回ctm中的当前变换矩阵。这不会改变画布中的矩阵,而只是返回它的一个副本。
参数 | |
---|---|
ctm | Matrix 这个值永远不会 |
getMatrix
Matrix getMatrix()
这种方法在API级别16中已被弃用。
Hardware accelerated
当传递给View或Drawable时,画布可能具有任何矩阵,因为它是在层次结构中定义的实现方式,因此可以创建这样的画布。在这种情况下,推荐在不考虑当前矩阵的情况下绘制内容,或者跟踪画布外的相关变换状态。
返回一个新的矩阵与一个画布的当前变换矩阵的副本。
返回 | |
---|---|
Matrix | 这个值永远不会 |
getMaximumBitmapHeight
int getMaximumBitmapHeight()
返回使用此画布绘制的位图的最大允许高度。尝试使用比此值高的位图绘制将导致错误。
返回 | |
---|---|
int |
也可以看看:
getMaximumBitmapWidth
int getMaximumBitmapWidth()
返回使用此画布绘制的位图的最大允许宽度。尝试使用比此值更宽的位图绘制会导致错误。
返回 | |
---|---|
int |
也可以看看:
getSaveCount
int getSaveCount()
返回Canvas私有堆栈上矩阵/剪辑状态的数量。这将等于#save()调用 - #restore()调用。
返回 | |
---|---|
int |
isHardwareAccelerated
boolean isHardwareAccelerated()
指示此Canvas是否使用硬件加速。请注意,此方法没有定义什么类型的硬件加速可能或可能不使用。
返回 | |
---|---|
boolean | 如果绘图操作是硬件加速,则为真,否则为false。 |
isOpaque
boolean isOpaque()
如果当前图层绘制的设备是不透明的(即不支持每像素alpha),则返回true。
返回 | |
---|---|
boolean | 如果当前图层所绘制的设备是不透明的,则为true |
quickReject
boolean quickReject(float left, 浮动顶部, 浮动右 浮底, Canvas.EdgeType类型)
如果指定的矩形在被当前矩阵变换之后将完全位于当前剪辑之外,则返回true。调用它来检查您打算绘制的区域是否被剪裁(因此您可以跳过绘制调用)。
参数 | |
---|---|
left | float :与当前剪辑进行比较的矩形左侧 |
top | float :与当前剪辑进行比较的矩形顶部 |
right | float :与当前剪辑进行比较的矩形右侧 |
bottom | float :与当前剪辑进行比较的矩形底部 |
type | Canvas.EdgeType :AA 如果路径应该被视为抗锯齿,因为这意味着它可能会影响比非抗锯齿(BW )更大的面积(更多的像素)。 这个值永远不会 |
返回 | |
---|---|
boolean | 如果rect(由画布矩阵转换)与画布的剪辑不相交,则为true |
quickReject
boolean quickReject(RectF rect, Canvas.EdgeType type)
如果指定的矩形在被当前矩阵变换之后将完全位于当前剪辑之外,则返回true。调用它来检查您打算绘制的区域是否被剪裁(因此您可以跳过绘制调用)。
参数 | |
---|---|
rect | RectF :与当前剪辑进行比较的rect 这个值永远不会 |
type | Canvas.EdgeType :AA 如果路径应该被视为抗锯齿,因为这意味着它可能会影响比非抗锯齿(BW )更大的面积(更多的像素)。 这个值永远不会 |
返回 | |
---|---|
boolean | 如果rect(由画布矩阵转换)与画布的剪辑不相交,则为true |
quickReject
boolean quickReject(路径路径, Canvas.EdgeType类型)
如果指定的路径被当前矩阵转换后将完全位于当前剪辑之外,则返回true。调用它来检查您打算绘制的区域是否被剪裁(因此您可以跳过绘制调用)。注意:对于速度,即使路径本身可能不与剪辑相交(即,路径的边界相交,但路径不相交),它可能会返回false。
参数 | |
---|---|
path | Path :与当前剪辑进行比较的路径 这个值永远不会 |
type | Canvas.EdgeType :AA 如果路径应该被视为抗锯齿,因为这意味着它可能会影响比非抗锯齿(BW )更大的面积(更多的像素)。 这个值永远不会 |
返回 | |
---|---|
boolean | 如果路径(由画布矩阵转换)与画布的剪辑不相交,则为true |
恢复
void restore()
此调用平衡先前对save()的调用,并用于从上次保存调用后删除对矩阵/片段状态的所有修改。调用restore()比save()被调用多一次是一个错误。
restoreToCount
void restoreToCount(int saveCount)
高效的方式弹出保存计数之后发生的save()的所有调用到达saveCount。这是saveCount小于1的错误。示例:int count = canvas.save(); ... //更多的调用潜在地保存()canvas.restoreToCount(count); //现在画布回到处于初始//调用save()之前的状态。
参数 | |
---|---|
saveCount | int :恢复到的保存级别。 |
回转
void rotate(float degrees, 浮点px, 浮动py)
用指定的旋转预先计算当前矩阵。
参数 | |
---|---|
degrees | float :旋转量,以度为单位 |
px | float :枢轴点的x坐标(旋转不变) |
py | float :枢轴点的y坐标(旋转不变) |
保存
int save(int saveFlags)
这种方法在API级别被废弃26
使用save()
来代替。
基于saveFlags,可以将当前矩阵和剪辑保存到专用堆栈上。
注意:如果可能,请使用无参数的save()。它比使用此方法单独禁用矩阵或剪辑的方式更简单和更快。
随后的转换,缩放,旋转,偏移,concat或clipRect,clipPath都将像往常一样运行,但是当进行对restore()的平衡调用时,这些调用将被遗忘,并且save()之前存在的设置将被恢复。
参数 | |
---|---|
saveFlags | int :指定要保存/还原的Canvas状态的哪些部分的标志位 |
返回 | |
---|---|
int | 传递给restoreToCount()的值来平衡此save() |
保存
int save()
将当前矩阵和剪辑保存到专用堆栈上。
随后的转换,缩放,旋转,偏移,concat或clipRect,clipPath都将像往常一样运行,但是当进行对restore()的平衡调用时,这些调用将被遗忘,并且save()之前存在的设置将被恢复。
返回 | |
---|---|
int | 传递给restoreToCount()的值来平衡此save() |
保存层
int saveLayer(RectF bounds, Paint paint, int saveFlags)
这种方法在API级别被废弃26
使用saveLayer(RectF, Paint)
来代替。
这与save()的行为相同,但是它另外分配并将绘图重定向到屏幕外的位图。
注意:这种方法非常昂贵,导致包含内容的渲染成本超过两倍。避免使用此方法,特别是如果提供的边界较大,或者CLIP_TO_LAYER_SAVE_FLAG
从saveFlags
参数中省略 。建议 hardware layer
在视图上使用一个xfermode,彩色滤镜或alpha,因为它的性能要好于这种方法。
所有绘图调用均定向到新分配的屏幕外位图。只有当对restore()进行平衡调用时,屏幕上的缓冲区才被绘制回Canvas的当前目标(屏幕,目标位图或上一层)。
油漆的属性- alpha
, Xfermode
和 ColorFilter
被当屏幕外的位图被拉回恢复时采用()被调用。
参数 | |
---|---|
bounds | RectF :可能为null。屏幕位图需要的最大尺寸(局部坐标) |
paint | Paint :这是被复制的,并且在调用restore()时被应用到屏幕上。 该值可能是 |
saveFlags | int :见_SAVE_FLAG常数,一般ALL_SAVE_FLAG 建议出于性能原因。 |
返回 | |
---|---|
int | 值传递给restoreToCount()以平衡此save() |
保存层
int saveLayer(RectF bounds, Paint paint)
这与save()的行为相同,但是它还将绘图分配并重定向到屏幕外渲染目标。
注意:这种方法非常昂贵,导致包含内容的渲染成本超过两倍。避免在可能的情况下使用此方法,而是使用 hardware layer
View在应用xfermode,颜色滤镜或alpha,因为它会比这种方法好得多。
所有绘图调用均定向到新分配的屏幕外渲染目标。只有当对restore()进行平衡调用时,是否将屏幕外缓冲区绘制回Canvas的当前目标(如果这些调用是嵌套的,那么它们可能是上一层)。
油漆的属性- alpha
, Xfermode
以及 ColorFilter
当屏幕外渲染目标被拉回时恢复应用()被调用。
参数 | |
---|---|
bounds | RectF :可能为null。屏幕外渲染目标所需的最大大小(局部坐标) |
paint | Paint :这是被复制的,并且在调用restore()时被应用到屏幕上。 该值可能是 |
返回 | |
---|---|
int | 值传递给restoreToCount()以平衡此save() |
保存层
int saveLayer(float left, 浮动顶部, 浮动右 浮底, 油漆漆)
方便的saveLayer(RectF, Paint)
是采用边界矩形的四个浮点坐标。
参数 | |
---|---|
left | float |
top | float |
right | float |
bottom | float |
paint | Paint 该值可能是 |
返回 | |
---|---|
int |
保存层
int saveLayer(float left, 浮动顶部, 浮动右 浮底, 油漆, int saveFlags)
这种方法在API级别被废弃26
使用saveLayer(float, float, float, float, Paint)
来代替。
保存版本的saveLayer()取4个值而不是一个RectF。
参数 | |
---|---|
left | float |
top | float |
right | float |
bottom | float |
paint | Paint 该值可能是 |
saveFlags | int |
返回 | |
---|---|
int |
保存阿尔法层
int saveLayerAlpha(float left, 浮动顶部, 浮动右 浮底, int alpha, int saveFlags)
这种方法在API级别被废弃26
使用saveLayerAlpha(float, float, float, float, int)
来代替。
对于SaveLayerAlpha()的Helper,它取4个值而不是一个RectF。
参数 | |
---|---|
left | float |
top | float |
right | float |
bottom | float |
alpha | int |
saveFlags | int |
返回 | |
---|---|
int |
保存阿尔法层
int saveLayerAlpha(RectF bounds, int alpha)
方便saveLayer(RectF, Paint)
而不是使用整个Paint对象,它只需要alpha
参数。
参数 | |
---|---|
bounds | RectF :屏幕位图需要的最大大小(局部坐标) 该值可能是 |
alpha | int :在恢复期间绘制时应用于屏幕的阿尔法() |
返回 | |
---|---|
int |
保存阿尔法层
int saveLayerAlpha(RectF bounds, int alpha, int saveFlags)
这种方法在API级别被废弃26
使用saveLayerAlpha(RectF, int)
来代替。
这与save()的行为相同,但是它另外分配并将绘图重定向到屏幕外的位图。
注意:这种方法非常昂贵,导致包含内容的渲染成本超过两倍。避免使用此方法,特别是如果提供的边界较大,或者CLIP_TO_LAYER_SAVE_FLAG
从saveFlags
参数中省略 。建议 hardware layer
在视图上使用一个xfermode,彩色滤镜或alpha,因为它的性能要好于这种方法。
所有绘图调用均定向到新分配的屏幕外位图。只有当对restore()进行平衡调用时,屏幕上的缓冲区才被绘制回Canvas的当前目标(屏幕,目标位图或上一层)。
alpha
当调用restore()时屏幕位图被绘制时, 该参数被应用。
参数 | |
---|---|
bounds | RectF :屏幕位图需要的最大大小(局部坐标) 该值可能是 |
alpha | int :在恢复期间绘制时应用于屏幕的阿尔法() |
saveFlags | int :见_SAVE_FLAG常数,一般ALL_SAVE_FLAG 建议出于性能原因。 |
返回 | |
---|---|
int | 值传递给restoreToCount()以平衡此调用 |
保存阿尔法层
int saveLayerAlpha(float left, 浮动顶部, 浮动右 浮底, int alpha)
方便的saveLayerAlpha(RectF, int)
是采用边界矩形的四个浮点坐标。
参数 | |
---|---|
left | float |
top | float |
right | float |
bottom | float |
alpha | int |
返回 | |
---|---|
int |
规模
void scale(float sx, 浮动和, 浮点px, 浮动py)
以指定的比例预先计算当前矩阵。
参数 | |
---|---|
sx | float :X中的量化量 |
sy | float :Y量表 |
px | float :枢轴点的x坐标(按比例不变) |
py | float :枢轴点的y坐标(按比例不变) |
setBitmap
void setBitmap(Bitmap bitmap)
指定要绘制的画布的位图。所有画布状态(如图层,过滤器和保存/恢复堆栈)都将重置。此外,画布的目标密度更新为与位图的目标密度相匹配。在API级别之前,Build.VERSION_CODES.O
保留当前矩阵和剪辑堆栈。
参数 | |
---|---|
bitmap | Bitmap :指定要绘制的画布的可变位图。 该值可能是 |
也可以看看:
setDensity
void setDensity(int density)
指定此Canvas的支持位图的密度。这样可以修改画布本身的目标密度,还可以修改其背景位图的密度Bitmap.setDensity(int)
。
参数 | |
---|---|
density | int :画布的新目标密度,用于在绘制位图时确定缩放因子。使用 DENSITY_NONE 禁用位图缩放。 |
也可以看看:
setMatrix
void setMatrix(矩阵矩阵)
用指定的矩阵完全替换当前矩阵。如果矩阵参数为空,则将当前矩阵重置为标识。 注:建议使用concat(Matrix)
, scale(float, float)
,translate(float, float)
和 rotate(float)
采用这个方法。
参数 | |
---|---|
matrix | Matrix :用矩阵替换当前矩阵。如果为空,则将当前矩阵设置为标识。 |
也可以看看:
受保护的方法
checkRange
void checkRange(int length, int offset, int count)
参数 | |
---|---|
length | int |
offset | int |
count | int |
(2017年9月调查)