Cancvas

跳到内容 导航
参考
 
  •                                               
  •                                                                      
  •                                                                      
  •                                               
  •                                               
  •                                               
  •                                               
  •                      
  • 加入 API 1级

    帆布

    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

    用作quickReject()调用参数的常数值。 

    enum Canvas.VertexMode

     

    常量

    int ALL_SAVE_FLAG

    restore()被调用时恢复所有内容(标准保存标志)。

    int CLIP_SAVE_FLAG

    这个常量是在API级别26.使用过时的无支撑的版本save()saveLayer(RectF, Paint)或 saveLayerAlpha(RectF, int)对于saveLayer()调用,剪辑总是针对Hardware accelerated 画布进行还原,以及作为Build.VERSION_CODES.O所有画布类型的默认行为的API级别

    int CLIP_TO_LAYER_SAVE_FLAG

    该常数在API级别26中被废弃。该标志导致性能差,并且使用不同剪辑的单层或多个绘图命令可以实现相同的效果。

    int FULL_COLOR_LAYER_SAVE_FLAG

    此常数在API级别26中已被弃用。此标志被忽略。使用无旗版本saveLayer(RectF, Paint) saveLayerAlpha(RectF, int)

    int HAS_ALPHA_LAYER_SAVE_FLAG

    此常数在API级别26中已被弃用。此标志被忽略。使用无旗版本saveLayer(RectF, Paint) saveLayerAlpha(RectF, int)

    int MATRIX_SAVE_FLAG

    这个常量是在API级别26.使用过时的无支撑的版本save()saveLayer(RectF, Paint)或 saveLayerAlpha(RectF, int)对于saveLayer()调用,矩阵总是针对Hardware accelerated 画布进行还原,以及作为Build.VERSION_CODES.O所有画布类型的默认行为的API级别

    字段

    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值弃用INTERSECT并 DIFFERENCE具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipPath(Path)和 clipOutPath(Path);

    boolean clipPath(Path path)

    用指定的路径相交当前的剪辑。

    boolean clipRect(float left, float top, float right, float bottom, Region.Op op)

    这种方法比其它API级26 Region.Op值弃用INTERSECT并 DIFFERENCE具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(float, float, float, float)和 clipOutRect(float, float, float, float);

    boolean clipRect(RectF rect)

    用指定的矩形相交当前的剪辑,以局部坐标表示。

    boolean clipRect(Rect rect)

    用指定的矩形相交当前的剪辑,以局部坐标表示。

    boolean clipRect(Rect rect, Region.Op op)

    这种方法比其它API级26 Region.Op值弃用INTERSECT并 DIFFERENCE具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(Rect)clipOutRect(Rect);

    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值弃用INTERSECT并 DIFFERENCE具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(RectF)clipOutRect(RectF);

    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中不建议使用hardware accelerated此方法。每次调用此方法时,画布的用法都需要内部的颜色缓冲区内容副本。使用位图可避免此复制,并允许应用程序更明确地控制像素数据的生命周期和副本。

    void drawBitmap(int[] colors, int offset, int stride, int x, int y, int width, int height, boolean hasAlpha, Paintpaint)

    在API级别21中不建议使用hardware accelerated此方法。每次调用此方法时,画布的用法都需要内部的颜色缓冲区内容副本。使用位图可避免此复制,并允许应用程序更明确地控制像素数据的生命周期和副本。

    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中已被弃用。 Hardware accelerated当传递给View或Drawable时,画布可能具有任何矩阵,因为它是在层次结构中定义的实现方式,因此可以创建这样的画布。在这种情况下,推荐在不考虑当前矩阵的情况下绘制内容,或者跟踪画布外的相关变换状态。

    finalMatrix getMatrix()

    这种方法在API级别16中已被弃用。 Hardware accelerated当传递给View或Drawable时,画布可能具有任何矩阵,因为它是在层次结构中定义的实现方式,因此可以创建这样的画布。在这种情况下,推荐在不考虑当前矩阵的情况下绘制内容,或者跟踪画布外的相关变换状态。

    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中被废弃了save()

    int save()

    将当前矩阵和剪辑保存到专用堆栈上。

    int saveLayer(RectF bounds, Paint paint, int saveFlags)

    这个方法在API级别26中被废弃了saveLayer(RectF, Paint)

    int saveLayer(RectF bounds, Paint paint)

    这与save()的行为相同,但是它还将绘图分配并重定向到屏幕外渲染目标。

    int saveLayer(float left, float top, float right, float bottom, Paint paint)

    方便的saveLayer(RectF, Paint)是采用边界矩形的四个浮点坐标。

    int saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags)

    这个方法在API级别26中被废弃了saveLayer(float, float, float, float, Paint)

    int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, int saveFlags)

    这个方法在API级别26中被废弃了saveLayerAlpha(float, float, float, float, int)

    int saveLayerAlpha(RectF bounds, int alpha)

    方便saveLayer(RectF, Paint)而不是使用整个Paint对象,它只需要alpha参数。

    int saveLayerAlpha(RectF bounds, int alpha, int saveFlags)

    这个方法在API级别26中被废弃了saveLayerAlpha(RectF, int)

    int saveLayerAlpha(float left, float top, float right, float bottom, int alpha)

    方便的saveLayerAlpha(RectF, int)是采用边界矩形的四个浮点坐标。

    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

    加入 API 1级
    int ALL_SAVE_FLAG

    restore()被调用时恢复所有内容(标准保存标志)。

    注意:出于性能原因,强烈建议将这个完整的标志传递给任何调用saveLayer()saveLayerAlpha() 变体。

    注意:接受此标志的所有方法都具有等同于传递此标志的无标记版本。

    常数值:31(0x0000001f)

    CLIP_SAVE_FLAG

    加入 API 1级
    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

    加入 API 1级
    int CLIP_TO_LAYER_SAVE_FLAG

    该常数在API级别26中被废弃。
    该标志导致性能差,并且使用不同剪辑的单层或多个绘图命令可以实现相同的效果。

    剪贴画到屏幕外层的边界,省略你自己的危险。

    注意:强烈建议不要为任何调用saveLayer()和 saveLayerAlpha()变体省略此标志不通过这个标志通常会引发硬件加速渲染的性能极差。

    常数值:16(0x00000010)

    FULL_COLOR_LAYER_SAVE_FLAG

    加入 API 1级
    int FULL_COLOR_LAYER_SAVE_FLAG

    此常数在API级别26中已被弃用。
    此标志被忽略。使用无旗版本saveLayer(RectF, Paint) saveLayerAlpha(RectF, int)

    该层需要每个颜色通道的完全8位精度。

    常数值:8(0x00000008)

    HAS_ALPHA_LAYER_SAVE_FLAG

    加入 API 1级
    int HAS_ALPHA_LAYER_SAVE_FLAG

    此常数在API级别26中已被弃用。
    此标志被忽略。使用无旗版本saveLayer(RectF, Paint) saveLayerAlpha(RectF, int)

    该层需要每像素Alpha通道。

    常数值:4(0x00000004)

    MATRIX_SAVE_FLAG

    加入 API 1级
    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

    用于确定何时兼容性缩放有效。

    公共建设者


    帆布

    加入 API 1级
    画布()

    构造一个空的光栅画布。使用setBitmap()指定要绘制的位图。最初的目标密度DENSITY_NONE当为画布设置目标位图时,通常会被替换。

    帆布

    加入 API 1级
    画布(图)

    构造一个带有指定位图绘制的画布。位图必须是可变的。

    画布的初始目标密度与给定位图的密度相同。

    参数
    bitmap Bitmap:指定要绘制的画布的可变位图。

    这个值永远不会null

    公共方法


    clipOutPath

    加入 API级别26
    boolean clipOutPath(路径路径)

    将剪辑设置为当前剪辑和指定路径的差异。

    参数
    path Path:差异操作中使用的路径

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipOutRect

    加入 API级别26
    boolean clipOutRect(int left, 
                    int顶部, 
                    int对, 
                    int底部)

    将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。

    参数
    left int:在差异操作中使用的矩形的左侧
    top int:在差异操作中使用的矩形的顶部
    right int:在差异操作中使用的矩形右侧
    bottom int:在差异操作中使用矩形的底部
    返回
    boolean 如果生成的剪辑不为空,则为true

    clipOutRect

    加入 API级别26
    boolean clipOutRect(Rect rect)

    将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。

    参数
    rect Rect:用当前剪辑执行差异的矩形。

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipOutRect

    加入 API级别26
    boolean clipOutRect(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底)

    将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。

    参数
    left float:在差异操作中使用的矩形的左侧
    top float:在差异操作中使用的矩形的顶部
    right float:在差异操作中使用的矩形右侧
    bottom float:在差异操作中使用矩形的底部
    返回
    boolean 如果生成的剪辑不为空,则为true

    clipOutRect

    加入 API级别26
    boolean clipOutRect(RectF rect)

    将剪辑设置为当前剪辑和指定矩形的差异,以局部坐标表示。

    参数
    rect RectF:用当前剪辑执行差异的矩形。

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipPath

    加入 API 1级
    boolean clipPath(Path path, 
                     Region.Op op)

    这种方法是在API级26弃用
    比其他Region.Op值INTERSECT和 DIFFERENCE具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipPath(Path)和 clipOutPath(Path);

    使用指定的路径修改当前的剪辑。

    参数
    path Path:在当前剪辑上操作的路径

    这个值永远不会null

    op Region.Op:剪辑如何修改

    这个值永远不会null

    返回
    boolean 如果结果为非空,则为true

    clipPath

    加入 API 1级
    布尔clipPath(路径路径)

    用指定的路径相交当前的剪辑。

    参数
    path Path:与当前剪辑相交的路径

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipRect

    加入 API 1级
    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:剪辑如何修改

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipRect

    加入 API 1级
    boolean clipRect(RectF rect)

    用指定的矩形相交当前的剪辑,以局部坐标表示。

    参数
    rect RectF:与当前剪辑相交的矩形。

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipRect

    加入 API 1级
    boolean clipRect(Rect rect)

    用指定的矩形相交当前的剪辑,以局部坐标表示。

    参数
    rect Rect:与当前剪辑相交的矩形。

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipRect

    加入 API 1级
    boolean clipRect(Rect rect, 
                     Region.Op op)

    这种方法是在API级26弃用
    比其他Region.Op值INTERSECT和 DIFFERENCE具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(Rect)clipOutRect(Rect);

    使用指定的矩形修改当前的剪辑,以本地坐标表示。

    参数
    rect Rect:与当前剪辑相交的矩形。

    这个值永远不会null

    op Region.Op:剪辑如何修改

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    clipRect

    加入 API 1级
    boolean clipRect(int left, 
                    int顶部, 
                    int对, 
                    int底部)

    用指定的矩形相交当前的剪辑,以局部坐标表示。

    参数
    left int:与当前剪辑相交的矩形左侧
    top int:与当前剪辑相交的矩形的顶部
    right int:与当前剪辑相交的矩形右侧
    bottom int:与当前剪辑相交的矩形的底部
    返回
    boolean 如果生成的剪辑不为空,则为true

    clipRect

    加入 API 1级
    boolean clipRect(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底)

    用指定的矩形相交当前的剪辑,以局部坐标表示。

    参数
    left float:与当前剪辑相交的矩形左侧
    top float:与当前剪辑相交的矩形的顶部
    right float:与当前剪辑相交的矩形右侧
    bottom float:与当前剪辑相交的矩形的底部
    返回
    boolean 如果生成的剪辑不为空,则为true

    clipRect

    加入 API 1级
    boolean clipRect(RectF rect, 
                     Region.Op op)

    这种方法是在API级26弃用
    比其他Region.Op值INTERSECT和 DIFFERENCE具有扩大夹的能力。画布剪切API旨在仅由于还原操作展开剪辑。这使得视图父对象可以剪辑画布,以便清楚地定义其子项的最大绘图区域。推荐的替代电话是clipRect(RectF)clipOutRect(RectF);

    使用指定的矩形修改当前的剪辑。

    参数
    rect RectF:与当前剪辑相交的rect

    这个值永远不会null

    op Region.Op:剪辑如何修改

    这个值永远不会null

    返回
    boolean 如果生成的剪辑不为空,则为true

    CONCAT

    加入 API 1级
    void concat(矩阵矩阵)

    用指定的矩阵预先计算当前矩阵。如果指定的矩阵为空,则此方法不执行任何操作。

    参数
    matrix Matrix:预先连接当前矩阵的矩阵

    该值可能是null

    drawARGB

    加入 API 1级
    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

    加入 API 21级
    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:用来画弧的油漆

    这个值永远不会null

    drawArc

    加入 API 1级
    void drawArc(RectF oval,
                    float startAngle, 
                    浮动扫掠, 
                    布尔使用中心, 
                    油漆漆)

    绘制指定的弧,其将被缩放以适合指定的椭圆。

    如果起始角度为负或> = 360,起始角度被视为起始角度模数360。

    如果扫掠角度> 360°,则椭圆形被完全绘制。请注意,这与SkPath :: arcTo略有不同,它将扫描角度视为360度。如果扫描角度为负,则扫描角度被视为360度扫描角度

    弧线顺时针拉伸。0度的角度对应于0度(手表3点钟)的几何角度。

    参数
    oval RectF:用于定义圆弧形状和大小的椭圆形边界

    这个值永远不会null

    startAngle float:弧开始的起始角度(以度为单位)
    sweepAngle float:顺时针测量扫描角度(以度为单位)
    useCenter boolean:如果为真,请将椭圆的中心包含在圆弧中,如果正在抚摸,则关闭它。这将画一个楔子
    paint Paint:用来画弧的油漆

    这个值永远不会null

    drawBitmap

    加入 API 1级
    void drawBitmap(Bitmap bitmap, 
                     Matrix matrix, 
                     Paint paint)

    使用指定的矩阵绘制位图。

    参数
    bitmap Bitmap:绘制位图

    这个值永远不会null

    matrix Matrix:绘制时用于转换位图的矩阵

    这个值永远不会null

    paint Paint:可能为null。油漆用来绘制位图

    drawBitmap

    加入 API 3级
    void drawBitmap(int [] colors, 
                    int offset, 
                    大步走 
                    浮动x, 
                    浮动y, 
                    int width, 
                    int高度, 
                    布尔hasAlpha, 
                    油漆漆)

    在API级别21中不建议
    使用hardware accelerated此方法。每次调用此方法时,画布的用法都需要内部的颜色缓冲区内容副本。使用位图可避免此复制,并允许应用程序更明确地控制像素数据的生命周期和副本。

    将指定的颜色数组视为位图,并绘制它。这样做与第一次从数组中创建位图,然后绘制它相同的结果,但是这种方法避免了明确地创建一个位图对象,如果颜色经常变化可以更有效。

    参数
    colors int:表示位图像素的颜色数组

    这个值永远不会null

    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

    加入 API 1级
    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

    这个值永远不会null

    offset int
    stride int
    x int
    y int
    width int
    height int
    hasAlpha boolean
    paint Paint

    该值可能是null

    drawBitmap

    加入 API 1级
    void drawBitmap(Bitmap bitmap, 
                     Rect src, 
                     Rect dst, 
                     Paint paint)

    绘制指定的位图,自动缩放/翻译以填充目标矩形。如果源矩形不为空,则它指定要绘制的位图的子集。

    注意:如果paint包含一个maskfilter,它生成一个扩展到位图原始宽度/高度之外的掩码(例如BlurMaskFilter),那么位图将被绘制为具有CLAMP模式的着色器。因此,原始宽度/高度之外的颜色将被复制的边缘颜色。

    此函数忽略与位图关联的密度这是因为源和目标矩形坐标空间处于各自的密度,所以必须已经应用了适当的缩放因子。

    参数
    bitmap Bitmap:要绘制的位图

    这个值永远不会null

    src Rect:可能为null。要绘制的位图的子集
    dst Rect:位图将被缩放/翻译以适应的矩形

    这个值永远不会null

    paint Paint:可能为null。油漆用来绘制位图

    drawBitmap

    加入 API 1级
    void drawBitmap(Bitmap bitmap, 
                     Rect src, 
                     RectF dst, 
                     Paint paint)

    绘制指定的位图,自动缩放/翻译以填充目标矩形。如果源矩形不为空,则它指定要绘制的位图的子集。

    注意:如果paint包含一个maskfilter,它生成一个扩展到位图原始宽度/高度之外的掩码(例如BlurMaskFilter),那么位图将被绘制为具有CLAMP模式的着色器。因此,原始宽度/高度之外的颜色将被复制的边缘颜色。

    此函数忽略与位图关联的密度这是因为源和目标矩形坐标空间处于各自的密度,所以必须已经应用了适当的缩放因子。

    参数
    bitmap Bitmap:要绘制的位图

    这个值永远不会null

    src Rect:可能为null。要绘制的位图的子集
    dst RectF:位图将被缩放/翻译以适应的矩形

    这个值永远不会null

    paint Paint:可能为null。油漆用来绘制位图

    drawBitmap

    加入 API 1级
    void drawBitmap(Bitmap bitmap,
                    浮动左 
                    浮动顶部, 
                    油漆漆)

    使用由当前矩阵转换的指定绘制,绘制指定的位图,其顶部/左侧角(x,y)。

    注意:如果paint包含一个maskfilter,它生成一个扩展到位图原始宽度/高度之外的掩码(例如BlurMaskFilter),那么位图将被绘制为具有CLAMP模式的着色器。因此,原始宽度/高度之外的颜色将被复制的边缘颜色。

    如果位图和画布具有不同的密度,则此功能将自动缩放位图,使其与画布的密度相同。

    参数
    bitmap Bitmap:要绘制的位图

    这个值永远不会null

    left float:绘制位图左侧的位置
    top float:正在绘制位图的顶端的位置
    paint Paint:用于绘制位图的绘图(可能为null)

    drawBitmapMesh

    加入 API 1级
    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:使用网格绘制的位图

    这个值永远不会null

    meshWidth int:网格中的列数。如果这是0,没有任何东西
    meshHeight int:网格中的行数。如果这是0,没有任何东西
    verts float:x,y对的数组,指定应绘制网格的位置。数组中必须至少有(meshWidth + 1)*(meshHeight + 1)* 2 + vertOffset值

    这个值永远不会null

    vertOffset int:绘制之前要跳过的verts元素数
    colors int:可能为null。指定每个顶点处的颜色,该颜色在单元格之间插值,并将其值乘以相应的位图颜色。如果不为空,则数组中必须至少有(meshWidth + 1)*(meshHeight + 1)+ colorOffset值。
    colorOffset int:绘制前要跳过的颜色元素数
    paint Paint:可能为null。油漆用来绘制位图

    画圆

    加入 API 1级
    void drawCircle(float cx, 
                    浮球, 
                    浮动半径, 
                    油漆漆)

    使用指定的油漆绘制指定的圆。如果radius <= 0,则不会绘制任何内容。根据油漆中的样式,圆圈将被填充或框架。

    参数
    cx float:要绘制的圆环的中心的x坐标
    cy float:要绘制的圆环的中心的y坐标
    radius float:要绘制的圆环的半径
    paint Paint画画用来画圆

    这个值永远不会null

    drawColor

    加入 API 1级
    void drawColor(int color)

    使用srcover porterduff模式,使用指定的颜色填充整个画布的位图(仅限于当前的剪辑)。

    参数
    color int:画在画布上的颜色

    drawColor

    加入 API 1级
    void drawColor(int color, 
                     PorterDuff.Mode mode)

    使用指定的颜色和porter-duff xfermode填充整个画布的位图(限于当前的剪辑)。

    参数
    color int:画的颜色
    mode PorterDuff.Mode:搬运工模式适用于颜色

    这个值永远不会null

    的drawLine

    加入 API 1级
    void drawLine(float startX, 
                    浮动startY, 
                    浮动挡X, 
                    浮动stopY, 
                    油漆漆)

    使用指定的绘制绘制一个具有指定开始和停止x,y坐标的线段。

    请注意,由于线条总是“框架”,所以在画面中忽略样式。

    退化线(长度为0)不会绘制。

    参数
    startX float:行的起始点的x坐标
    startY float:线的起点的y坐标
    stopX float
    stopY float
    paint Paint油漆用来画线

    这个值永远不会null

    画线

    加入 API 1级
    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 ...]

    这个值永远不会null

    offset int:绘制前要跳过的数组中的数值。
    count int:数组中要处理的值的数量,跳过“偏移量”之后。由于每行使用4个值,因此绘制的“行”数真的是(count >> 2)。
    paint Paint油漆用来画点

    这个值永远不会null

    画线

    加入 API 1级
    void drawLines(float [] pts, 
                     Paint paint)
    参数
    pts float

    这个值永远不会null

    paint Paint

    这个值永远不会null

    drawOval

    加入 API 21级
    void drawOval(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底, 
                    油漆漆)

    使用指定的油漆绘制指定的椭圆。椭圆形将根据油漆中的样式填充或框架。

    参数
    left float
    top float
    right float
    bottom float
    paint Paint

    这个值永远不会null

    drawOval

    加入 API 1级
    无效drawOval(RectF椭圆形, 
                     油漆涂料)

    使用指定的油漆绘制指定的椭圆。椭圆形将根据油漆中的样式填充或框架。

    参数
    oval RectF:要绘制的椭圆的矩形边界

    这个值永远不会null

    paint Paint

    这个值永远不会null

    drawPaint

    加入 API 1级
    void drawPaint(油漆

    使用指定的颜色填充整个画布的位图(仅限于当前的剪辑)。使用指定的绘制绘制无限大的矩形,这是相当的(但更快)。

    参数
    paint Paint:用来画在画布上的油漆

    这个值永远不会null

    drawPatch

    void drawPatch(NinePatch patch, 
                     RectF dst, 
                     Paint paint)
    参数
    patch NinePatch

    这个值永远不会null

    dst RectF

    这个值永远不会null

    paint Paint

    该值可能是null

    drawPatch

    void drawPatch(NinePatch patch, 
                     Rect dst, 
                     Paint paint)
    参数
    patch NinePatch

    这个值永远不会null

    dst Rect

    这个值永远不会null

    paint Paint

    该值可能是null

    drawPath

    加入 API 1级
    void drawPath(Path path, 
                     Paint paint)

    使用指定的颜色绘制指定的路径。该路径将根据油漆中的“样式”填充或框架。

    参数
    path Path要绘制的路径

    这个值永远不会null

    paint Paint:用来绘制路径的油漆

    这个值永远不会null

    drawPicture

    加入 API 1级
    void drawPicture(Picture picture, 
                     RectF dst)

    绘制图片,拉伸以适应第d个矩形。

    参数
    picture Picture

    这个值永远不会null

    dst RectF

    这个值永远不会null

    drawPicture

    加入 API 1级
    void drawPicture(Picture picture)

    保存画布状态,绘制图片,并恢复画布状态。这与picture.draw(canvas)不同,后者不执行任何保存/恢复。

    注意:这将强制图片内部呼叫 endRecording(),以准备播放。

    参数
    picture Picture:要画的图片

    这个值永远不会null

    drawPicture

    加入 API 1级
    void drawPicture(Picture picture, 
                     Rect dst)

    绘制图片,拉伸以适应第d个矩形。

    参数
    picture Picture

    这个值永远不会null

    dst Rect

    这个值永远不会null

    drawPoint

    加入 API 1级
    void drawPoint(float x, 
                    浮动y, 
                    油漆漆)

    drawPoints()用于绘制单个点。

    参数
    x float
    y float
    paint Paint

    这个值永远不会null

    drawPoints

    加入 API 1级
    void drawPoints(float [] pts, 
                     Paint paint)

    drawPoints()的助手,假定您要绘制整个数组

    参数
    pts float

    这个值永远不会null

    paint Paint

    这个值永远不会null

    drawPoints

    加入 API 1级
    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油漆用来画点

    这个值永远不会null

    drawPosText

    加入 API 1级
    void drawPosText(String text,
                    float [] pos, 
                    油漆漆)

    此方法在API级别16中已弃用。
    此方法不支持字形组合和分解,因此不应用于复制脚本。它也不处理补充字符(例如表情符号)。

    绘制数组中的文本,每个字符的起始点由pos数组指定。

    参数
    text String:要绘制的文字

    这个值永远不会null

    pos float:用于定位每个字符的[x,y]位置的数组

    这个值永远不会null

    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    drawPosText

    加入 API 1级
    void drawPosText(char [] text, 
                    int索引, 
                    int计数, 
                    float [] pos, 
                    油漆漆)

    此方法在API级别16中已弃用。
    此方法不支持字形组合和分解,因此不应用于复制脚本。它也不处理补充字符(例如表情符号)。

    绘制数组中的文本,每个字符的起始点由pos数组指定。

    参数
    text char:要绘制的文字

    这个值永远不会null

    index int:绘制第一个字符的索引
    count int:从索引开始绘制的字符数。
    pos float:用于定位每个字符的[x,y]位置的数组

    这个值永远不会null

    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    drawRGB

    加入 API 1级
    void drawRGB(int r, 
                    int g, 
                    int b)

    使用srcover porterduff模式,使用指定的RGB颜色填充整个画布的位图(仅限于当前的剪辑)。

    参数
    r int:将颜色的红色成分(0..255)绘制到画布上
    g int:将绿色组件(0..255)的颜色绘制到画布上
    b int:蓝色组件(0..255)的颜色要画在画布上

    的drawRect

    加入 API 1级
    void drawRect(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底, 
                    油漆漆)

    使用指定的绘图绘制指定的Rect。矩形将根据油漆中的样式填充或框架。

    参数
    left float:要绘制的矩形的左侧
    top float:要绘制的矩形的顶端
    right float:要绘制的矩形的右侧
    bottom float:要绘制的矩形的底部
    paint Paint:用来画直角的油漆

    这个值永远不会null

    的drawRect

    加入 API 1级
    void drawRect(Rect r, 
                     Paint paint)

    使用指定的绘图绘制指定的Rect。矩形将根据油漆中的样式填充或框架。

    参数
    r Rect:要绘制的矩形。

    这个值永远不会null

    paint Paint:用来绘制矩形的油漆

    这个值永远不会null

    的drawRect

    加入 API 1级
    void drawRect(RectF rect, 
                     Paint paint)

    使用指定的绘图绘制指定的Rect。矩形将根据油漆中的样式填充或框架。

    参数
    rect RectF:要画的矩形

    这个值永远不会null

    paint Paint:用来画直角的油漆

    这个值永远不会null

    drawRoundRect

    加入 API 1级
    void drawRoundRect(RectF rect,
                    float rx, 
                    浮动ry, 
                    油漆漆)

    使用指定的油漆绘制指定的圆弧。根据油漆中的风格,圆形将被填充或框架。

    参数
    rect RectF:要绘制的roundRect的矩形边界

    这个值永远不会null

    rx float:用于圆角的椭圆的x半径
    ry float:用于圆角的椭圆的y半径
    paint Paint:用来绘制圆形的油漆

    这个值永远不会null

    drawRoundRect

    加入 API 21级
    void drawRoundRect(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底, 
                    float rx, 
                    浮动ry, 
                    油漆漆)

    使用指定的油漆绘制指定的圆弧。根据油漆中的风格,圆形将被填充或框架。

    参数
    left float
    top float
    right float
    bottom float
    rx float:用于圆角的椭圆的x半径
    ry float:用于圆角的椭圆的y半径
    paint Paint:用来绘制圆形的油漆

    这个值永远不会null

    的drawText

    加入 API 1级
    void drawText(CharSequence text,
                    int开始, 
                    int结束, 
                    浮动x, 
                    浮动y, 
                    油漆漆)

    绘制指定范围的文本,由起始/终止指定,其起始位于(x,y),在指定的“绘画”中。基于油漆中的对齐设置来解释原点。

    参数
    text CharSequence:要绘制的文字

    这个值永远不会null

    start int:要绘制的文本中的第一个字符的索引
    end int:(end-1)是要绘制的文本中的最后一个字符的索引
    x float:用于绘制文本的原点的x坐标
    y float:用于绘制文本的原点的y坐标
    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    的drawText

    加入 API 1级
    void drawText(String text,
                    浮动x, 
                    浮动y, 
                    油漆漆)

    使用指定的油漆绘制文本,原点为(x,y)。根据油漆中的对齐设置对原点进行解释。

    参数
    text String:要绘制的文字

    这个值永远不会null

    x float:正在绘制的文本的原点的x坐标
    y float:正在绘制的文本的基线的y坐标
    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    的drawText

    加入 API 1级
    void drawText(char [] text, 
                    int索引, 
                    int计数, 
                    浮动x, 
                    浮动y, 
                    油漆漆)

    使用指定的油漆绘制文本,原点为(x,y)。根据油漆中的对齐设置对原点进行解释。

    参数
    text char:要绘制的文字

    这个值永远不会null

    index int
    count int
    x float:正在绘制的文本的原点的x坐标
    y float:正在绘制的文本的基线的y坐标
    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    的drawText

    加入 API 1级
    void drawText(String text,
                    int开始, 
                    int结束, 
                    浮动x, 
                    浮动y, 
                    油漆漆)

    使用指定的油漆绘制文本,原点为(x,y)。根据油漆中的对齐设置对原点进行解释。

    参数
    text String:要绘制的文字

    这个值永远不会null

    start int:要绘制的文本中的第一个字符的索引
    end int:(end-1)是要绘制的文本中的最后一个字符的索引
    x float:正在绘制的文本的原点的x坐标
    y float:正在绘制的文本的基线的y坐标
    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    drawTextOnPath

    加入 API 1级
    void drawTextOnPath(String text, 
                     Path path,
                    float hOffset, 
                    float vOffset, 
                    油漆漆)

    沿着指定的路径使用指定的油漆绘制原点(x,y)的文本。油漆的“对齐”设置确定了开始文本的路径。

    参数
    text String:要绘制的文字

    这个值永远不会null

    path Path:文本应该遵循的路径为其基线

    这个值永远不会null

    hOffset float:沿路径的距离添加到文本的起始位置
    vOffset float:( - )或以下的距离(+)定位文本的路径
    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    drawTextOnPath

    加入 API 1级
    void drawTextOnPath(char [] text, 
                    int索引, 
                    int计数, 
                    路径路径,
                    float hOffset, 
                    float vOffset, 
                    油漆漆)

    沿着指定的路径使用指定的油漆绘制原点(x,y)的文本。油漆的“对齐”设置确定了开始文本的路径。

    参数
    text char:要绘制的文字

    这个值永远不会null

    index int
    count int
    path Path:文本应该遵循的路径为其基线

    这个值永远不会null

    hOffset float:沿路径的距离添加到文本的起始位置
    vOffset float:( - )或以下的距离(+)定位文本的路径
    paint Paint:用于文本的颜色(如颜色,大小,样式)

    这个值永远不会null

    drawTextRun

    加入 API级别23
    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:要呈现的文字

    这个值永远不会null

    index int:文本的开始渲染
    count int:要渲染的字符数
    contextIndex int:形成的上下文的开始。必须不大于索引。
    contextCount int:用于整形的上下文中的字符数。contexIndex + contextCount必须不小于index + count。
    x float:绘制文本的x位置
    y float:绘制文本的y位置
    isRtl boolean:运行是否在RTL方向
    paint Paint:油漆

    这个值永远不会null

    drawTextRun

    加入 API级别23
    void drawTextRun(CharSequence text,
                    int开始, 
                    int结束, 
                    int contextStart, 
                    int contextEnd, 
                    浮动x, 
                    浮动y, 
                    boolean isRtl, 
                    油漆漆)

    在一个方向上绘制一行文本,具有复杂文本整形的可选上下文。

    文本的运行包括从字符startend文本。此外,该范围contextStartcontextEnd被用作上下文,用于复杂文本整形的目的,如潜在不同的形状根据其旁边的文本阿拉伯语的文本。

    超出范围的所有文本都将contextStart..contextEnd被忽略。之间的文本 start,并end会进行布局和绘制。

    运行的方向由明确指定isRtl因此,该方法仅适用于单个方向的运行。文本的对齐方式由Paint的TextAlign值确定。此外,0 <= contextStart <= start <= end <= contextEnd <= text.length必须坚持进入。

    另请参见getRunAdvance(char[], int, int, int, int, boolean, int)相应的方法来测量文本; 绘制文本的前进宽度与从该方法获得的值相匹配。

    参数
    text CharSequence:要呈现的文字

    这个值永远不会null

    start int:文本的开始渲染。此位置之前的数据可用于形成上下文。
    end int:要渲染的文本的结尾。此位置之前或之后的数据可用于形成上下文。
    contextStart int:形成上下文开始的索引
    contextEnd int:整形上下文结束的索引
    x float:绘制文本的x位置
    y float:绘制文本的y位置
    isRtl boolean:运行是否在RTL方向
    paint Paint:油漆

    这个值永远不会null

    drawVertices

    加入 API 1级
    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:如何解释顶点数组

    这个值永远不会null

    vertexCount int:顶点数组中的值的数量(如果为非空,则为相应的texs和颜色数组)。每个逻辑顶点是两个值(x,y),vertexCount必须是2的倍数。
    verts float:网格的顶点数组

    这个值永远不会null

    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

    加入 API 1级
    boolean getClipBounds(Rect bounds)

    返回bounds参数中当前剪辑的边界(在局部坐标中),如果非空,则返回true。这可以以类似于quickReject的方式有用,因为它告诉您,在这些边界之外的绘图将被剪切出来。

    参数
    bounds Rect:在这里返回剪辑边界。如果它为空,则忽略它,但如果当前剪辑不为空,则仍返回true。
    返回
    boolean 如果当前剪辑不为空,则为true。

    getClipBounds

    加入 API 1级
    Rect getClipBounds()

    检索当前剪辑的边界(在本地坐标中)。

    返回
    Rect 剪辑限制,或者如果剪辑为空,则为[0,0,0,0]。

    这个值永远不会null

    getDensity

    加入 API 4级
    int getDensity()

    返回画布的目标密度。默认密度来自其支持位图的密度,或者DENSITY_NONE如果没有密度 

    返回
    int 返回画布的当前目标密度,用于在绘制位图时确定缩放因子。

    也可以看看:

    getDrawFilter

    加入 API 1级
    DrawFilter getDrawFilter()
    返回
    DrawFilter

    该值可能是null

    的getHeight

    加入 API 1级
    int getHeight()

    返回当前绘图层的高度

    返回
    int 当前绘图层的高度

    getMatrix

    加入 API 1级
    void getMatrix(Matrix ctm)

    这种方法在API级别16中已被弃用。
    Hardware accelerated当传递给View或Drawable时,画布可能具有任何矩阵,因为它是在层次结构中定义的实现方式,因此可以创建这样的画布。在这种情况下,推荐在不考虑当前矩阵的情况下绘制内容,或者跟踪画布外的相关变换状态。

    返回ctm中的当前变换矩阵。这不会改变画布中的矩阵,而只是返回它的一个副本。

    参数
    ctm Matrix

    这个值永远不会null

    getMatrix

    加入 API 1级
    Matrix getMatrix()

    这种方法在API级别16中已被弃用。
    Hardware accelerated当传递给View或Drawable时,画布可能具有任何矩阵,因为它是在层次结构中定义的实现方式,因此可以创建这样的画布。在这种情况下,推荐在不考虑当前矩阵的情况下绘制内容,或者跟踪画布外的相关变换状态。

    返回一个新的矩阵与一个画布的当前变换矩阵的副本。

    返回
    Matrix

    这个值永远不会null

    getMaximumBitmapHeight

    加入 API 14级
    int getMaximumBitmapHeight()

    返回使用此画布绘制的位图的最大允许高度。尝试使用比此值高的位图绘制将导致错误。

    返回
    int  

    也可以看看:

    getMaximumBitmapWidth

    加入 API 14级
    int getMaximumBitmapWidth()

    返回使用此画布绘制的位图的最大允许宽度。尝试使用比此值更宽的位图绘制会导致错误。

    返回
    int  

    也可以看看:

    getSaveCount

    加入 API 1级
    int getSaveCount()

    返回Canvas私有堆栈上矩阵/剪辑状态的数量。这将等于#save()调用 - #restore()调用。

    返回
    int  

    的getWidth

    加入 API 1级
    int getWidth()

    返回当前绘图层的宽度

    返回
    int 当前绘图层的宽度

    isHardwareAccelerated

    加入 API 11级
    boolean isHardwareAccelerated()

    指示此Canvas是否使用硬件加速。请注意,此方法没有定义什么类型的硬件加速可能或可能不使用。

    返回
    boolean 如果绘图操作是硬件加速,则为真,否则为false。

    isOpaque

    加入 API 1级
    boolean isOpaque()

    如果当前图层绘制的设备是不透明的(即不支持每像素alpha),则返回true。

    返回
    boolean 如果当前图层所绘制的设备是不透明的,则为true

    quickReject

    加入 API 1级
    boolean quickReject(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底, 
                    Canvas.EdgeType类型)

    如果指定的矩形在被当前矩阵变换之后将完全位于当前剪辑之外,则返回true。调用它来检查您打算绘制的区域是否被剪裁(因此您可以跳过绘制调用)。

    参数
    left float:与当前剪辑进行比较的矩形左侧
    top float:与当前剪辑进行比较的矩形顶部
    right float:与当前剪辑进行比较的矩形右侧
    bottom float:与当前剪辑进行比较的矩形底部
    type Canvas.EdgeTypeAA如果路径应该被视为抗锯齿,因为这意味着它可能会影响比非抗锯齿(BW更大的面积(更多的像素)。

    这个值永远不会null

    返回
    boolean 如果rect(由画布矩阵转换)与画布的剪辑不相交,则为true

    quickReject

    加入 API 1级
    boolean quickReject(RectF rect, 
                     Canvas.EdgeType type)

    如果指定的矩形在被当前矩阵变换之后将完全位于当前剪辑之外,则返回true。调用它来检查您打算绘制的区域是否被剪裁(因此您可以跳过绘制调用)。

    参数
    rect RectF:与当前剪辑进行比较的rect

    这个值永远不会null

    type Canvas.EdgeTypeAA如果路径应该被视为抗锯齿,因为这意味着它可能会影响比非抗锯齿(BW更大的面积(更多的像素)。

    这个值永远不会null

    返回
    boolean 如果rect(由画布矩阵转换)与画布的剪辑不相交,则为true

    quickReject

    加入 API 1级
    boolean quickReject(路径路径, 
                     Canvas.EdgeType类型)

    如果指定的路径被当前矩阵转换后将完全位于当前剪辑之外,则返回true。调用它来检查您打算绘制的区域是否被剪裁(因此您可以跳过绘制调用)。注意:对于速度,即使路径本身可能不与剪辑相交(即,路径的边界相交,但路径不相交),它可能会返回false。

    参数
    path Path:与当前剪辑进行比较的路径

    这个值永远不会null

    type Canvas.EdgeTypeAA如果路径应该被视为抗锯齿,因为这意味着它可能会影响比非抗锯齿(BW更大的面积(更多的像素)。

    这个值永远不会null

    返回
    boolean 如果路径(由画布矩阵转换)与画布的剪辑不相交,则为true

    恢复

    加入 API 1级
    void restore()

    此调用平衡先前对save()的调用,并用于从上次保存调用后删除对矩阵/片段状态的所有修改。调用restore()比save()被调用多一次是一个错误。

    restoreToCount

    加入 API 1级
    void restoreToCount(int saveCount)

    高效的方式弹出保存计数之后发生的save()的所有调用到达saveCount。这是saveCount小于1的错误。示例:int count = canvas.save(); ... //更多的调用潜在地保存()canvas.restoreToCount(count); //现在画布回到处于初始//调用save()之前的状态。

    参数
    saveCount int:恢复到的保存级别。

    回转

    加入 API 1级
    void rotate(float degrees)

    用指定的旋转预先计算当前矩阵。

    参数
    degrees float:旋转量,以度为单位

    回转

    加入 API 1级
    void rotate(float degrees, 
                    浮点px, 
                    浮动py)

    用指定的旋转预先计算当前矩阵。

    参数
    degrees float:旋转量,以度为单位
    px float:枢轴点的x坐标(旋转不变)
    py float:枢轴点的y坐标(旋转不变)

    保存

    加入 API 1级
    int save(int saveFlags)

    这种方法在API级别被废弃26
    使用save()来代替。

    基于saveFlags,可以将当前矩阵和剪辑保存到专用堆栈上。

    注意:如果可能,请使用无参数的save()。它比使用此方法单独禁用矩阵或剪辑的方式更简单和更快。

    随后的转换,缩放,旋转,偏移,concat或clipRect,clipPath都将像往常一样运行,但是当进行对restore()的平衡调用时,这些调用将被遗忘,并且save()之前存在的设置将被恢复。

    参数
    saveFlags int:指定要保存/还原的Canvas状态的哪些部分的标志位
    返回
    int 传递给restoreToCount()的值来平衡此save()

    保存

    加入 API 1级
    int save()

    将当前矩阵和剪辑保存到专用堆栈上。

    随后的转换,缩放,旋转,偏移,concat或clipRect,clipPath都将像往常一样运行,但是当进行对restore()的平衡调用时,这些调用将被遗忘,并且save()之前存在的设置将被恢复。

    返回
    int 传递给restoreToCount()的值来平衡此save()

    保存层

    加入 API 1级
    int saveLayer(RectF bounds, 
                     Paint paint,
                    int saveFlags)

    这种方法在API级别被废弃26
    使用saveLayer(RectF, Paint)来代替。

    这与save()的行为相同,但是它另外分配并将绘图重定向到屏幕外的位图。

    注意:这种方法非常昂贵,导致包含内容的渲染成本超过两倍。避免使用此方法,特别是如果提供的边界较大,或者CLIP_TO_LAYER_SAVE_FLAGsaveFlags参数中省略 建议 hardware layer在视图上使用一个xfermode,彩色滤镜或alpha,因为它的性能要好于这种方法。

    所有绘图调用均定向到新分配的屏幕外位图。只有当对restore()进行平衡调用时,屏幕上的缓冲区才被绘制回Canvas的当前目标(屏幕,目标位图或上一层)。

    油漆的属性- alpha, Xfermode和 ColorFilter被当屏幕外的位图被拉回恢复时采用()被调用。

    参数
    bounds RectF:可能为null。屏幕位图需要的最大尺寸(局部坐标)
    paint Paint:这是被复制的,并且在调用restore()时被应用到屏幕上。

    该值可能是null

    saveFlags int:见_SAVE_FLAG常数,一般ALL_SAVE_FLAG建议出于性能原因。
    返回
    int 值传递给restoreToCount()以平衡此save()

    保存层

    加入 API 21级
    int saveLayer(RectF bounds, 
                     Paint paint)

    这与save()的行为相同,但是它还将绘图分配并重定向到屏幕外渲染目标。

    注意:这种方法非常昂贵,导致包含内容的渲染成本超过两倍。避免在可能的情况下使用此方法,而是使用 hardware layerView在应用xfermode,颜色滤镜或alpha,因为它会比这种方法好得多。

    所有绘图调用均定向到新分配的屏幕外渲染目标。只有当对restore()进行平衡调用时,是否将屏幕外缓冲区绘制回Canvas的当前目标(如果这些调用是嵌套的,那么它们可能是上一层)。

    油漆的属性- alpha, Xfermode以及 ColorFilter当屏幕外渲染目标被拉回时恢复应用()被调用。

    参数
    bounds RectF:可能为null。屏幕外渲染目标所需的最大大小(局部坐标)
    paint Paint:这是被复制的,并且在调用restore()时被应用到屏幕上。

    该值可能是null

    返回
    int 值传递给restoreToCount()以平衡此save()

    保存层

    加入 API 21级
    int saveLayer(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底, 
                    油漆漆)

    方便的saveLayer(RectF, Paint)是采用边界矩形的四个浮点坐标。

    参数
    left float
    top float
    right float
    bottom float
    paint Paint

    该值可能是null

    返回
    int  

    保存层

    加入 API 1级
    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

    该值可能是null

    saveFlags int
    返回
    int  

    保存阿尔法层

    加入 API 1级
    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  

    保存阿尔法层

    加入 API 21级
    int saveLayerAlpha(RectF bounds,
                    int alpha)

    方便saveLayer(RectF, Paint)而不是使用整个Paint对象,它只需要alpha参数。

    参数
    bounds RectF:屏幕位图需要的最大大小(局部坐标)

    该值可能是null

    alpha int:在恢复期间绘制时应用于屏幕的阿尔法()
    返回
    int  

    保存阿尔法层

    加入 API 1级
    int saveLayerAlpha(RectF bounds,
                    int alpha, 
                    int saveFlags)

    这种方法在API级别被废弃26
    使用saveLayerAlpha(RectF, int)来代替。

    这与save()的行为相同,但是它另外分配并将绘图重定向到屏幕外的位图。

    注意:这种方法非常昂贵,导致包含内容的渲染成本超过两倍。避免使用此方法,特别是如果提供的边界较大,或者CLIP_TO_LAYER_SAVE_FLAGsaveFlags参数中省略 建议 hardware layer在视图上使用一个xfermode,彩色滤镜或alpha,因为它的性能要好于这种方法。

    所有绘图调用均定向到新分配的屏幕外位图。只有当对restore()进行平衡调用时,屏幕上的缓冲区才被绘制回Canvas的当前目标(屏幕,目标位图或上一层)。

    alpha当调用restore()时屏幕位图被绘制时, 该参数被应用。

    参数
    bounds RectF:屏幕位图需要的最大大小(局部坐标)

    该值可能是null

    alpha int:在恢复期间绘制时应用于屏幕的阿尔法()
    saveFlags int:见_SAVE_FLAG常数,一般ALL_SAVE_FLAG建议出于性能原因。
    返回
    int 值传递给restoreToCount()以平衡此调用

    保存阿尔法层

    加入 API 21级
    int saveLayerAlpha(float left, 
                    浮动顶部, 
                    浮动右 
                    浮底, 
                    int alpha)

    方便的saveLayerAlpha(RectF, int)是采用边界矩形的四个浮点坐标。

    参数
    left float
    top float
    right float
    bottom float
    alpha int
    返回
    int  

    规模

    加入 API 1级
    void scale(float sx, 
                    浮动和, 
                    浮点px, 
                    浮动py)

    以指定的比例预先计算当前矩阵。

    参数
    sx float:X中的量化量
    sy float:Y量表
    px float:枢轴点的x坐标(按比例不变)
    py float:枢轴点的y坐标(按比例不变)

    规模

    加入 API 1级
    void scale(float sx, 
                    浮动和)

    以指定的比例预先计算当前矩阵。

    参数
    sx float:X中的量化量
    sy float:Y量表

    setBitmap

    加入 API 1级
    void setBitmap(Bitmap bitmap)

    指定要绘制的画布的位图。所有画布状态(如图层,过滤器和保存/恢复堆栈)都将重置。此外,画布的目标密度更新为与位图的目标密度相匹配。在API级别之前,Build.VERSION_CODES.O保留当前矩阵和剪辑堆栈。

    参数
    bitmap Bitmap:指定要绘制的画布的可变位图。

    该值可能是null

    也可以看看:

    setDensity

    加入 API 4级
    void setDensity(int density)

    指定此Canvas的支持位图的密度。这样可以修改画布本身的目标密度,还可以修改其背景位图的密度Bitmap.setDensity(int)

    参数
    density int:画布的新目标密度,用于在绘制位图时确定缩放因子。使用 DENSITY_NONE禁用位图缩放。

    也可以看看:

    setDrawFilter

    加入 API 1级
    void setDrawFilter(DrawFilter filter)
    参数
    filter DrawFilter

    该值可能是null

    setMatrix

    加入 API 1级
    void setMatrix(矩阵矩阵)

    用指定的矩阵完全替换当前矩阵。如果矩阵参数为空,则将当前矩阵重置为标识。 注:建议使用concat(Matrix), scale(float, float)translate(float, float)和 rotate(float)采用这个方法。

    参数
    matrix Matrix:用矩阵替换当前矩阵。如果为空,则将当前矩阵设置为标识。

    也可以看看:

    歪斜

    加入 API 1级
    void skew(float sx, 
                    浮动和)

    以指定的偏移量预先计算当前矩阵。

    参数
    sx float:X的偏移量
    sy float:在Y中倾斜的量

    翻译

    加入 API 1级
    void translate(float dx, 
                    浮雕)

    用指定的转换预先计算当前矩阵

    参数
    dx float:在X中翻译的距离
    dy float:在Y中翻译的距离

    受保护的方法


    checkRange

    void checkRange(int length, 
                    int offset, 
                    int count)
    参数
    length int
    offset int
    count int

    throwIfCannotDraw

    void throwIfCannotDraw(Bitmap bitmap)
    参数
    bitmap Bitmap
    本网站使用cookies来存储您的网站特定语言和显示选项的偏好。
    进行简短的调查?
    帮助我们改善Android开发人员的体验。 
    (2017年9月调查)
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值