Canvas的各种方法大集合

一、Canvas简介

Canvas类就是一块儿画布,我们可以在上面画我们想画的任何东西。canvas提供了一些方法来帮助我们完成画作:

Canvase():创建一块空的画布,可以使用setBitmap()方法来设置绘制的具体画布。

Canvas(Bitmap bitmap):以bitmap对象创建一个画布,则将内容都绘制在bitmap上,bitmap不得为null;

Canvas(GL gl):在绘制3D效果时使用,与OpenGL有关;

drawColor:设置画布的背景色;

setBitmap:设置具体的画布;

clipRect:设置显示区域,即设置裁剪区;

isOpaque:检测是否支持透明;

rotate:  旋转画布

translate:移动画布

scale:缩放画布

setViewport:  设置画布中显示窗口。

skew:  设置偏移量。

restore: 用来恢复上一次save之前的状态

save:用来保存Canvas的当前状态

二、用Canvas画直线,画圆,画弧线,画文字

1.画直线——drawLine();

public void drawLine (float startX, float startY, float stopX, float stopY, Paint paint)

参数说明

参数说明
startX:起始端点的X坐标。
startY:起始端点的Y坐标。
stopX:终止端点的X坐标。
stopY:终止端点。
paint:绘制直线所使用的画笔。

2.画圆——drawCircle

public void drawCircle(float cx,float cy,float radius, Paint paint);
参数说明
cx:圆心的X坐标。
cy:圆心的Y坐标。
radius:圆的半径。
paint:绘制圆所使用的画笔。

3.画弧线——drawArc

public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

public void drawArc (float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
参数说明
oval:指定圆弧的外轮廓矩形区域。
startAngle:圆弧起始角度,单位为度。
sweepAngle:圆弧扫过的角度,顺时针方向,单位为度。
useCenter:如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形。
paint:绘制圆弧的画板属性,如颜色,是否填充等。
left:圆弧外轮廓矩形最左边的X坐标。
top:圆弧外轮廓矩形最上边的y坐标。
right:圆弧外轮廓矩形最右边的X坐标。
bottom:圆弧外轮廓矩形最下边的y坐标。

4.画矩形——drawRec

public void drawRect(double left, double top, double right, double bottom,Paint paint)

public void drawRect (RectF rect, Paint paint)

public void drawRect (Rect r, Paint paint)
参数说明
left:矩形最左边的X坐标。
top:矩形最上边的y坐标。
right:矩形最右边的X坐标。
bottom:矩形最下边的y坐标。
rect:指定矩形形状。
r:指定矩形形状。
paint:绘制矩形的画笔。

5.画圆角矩形——drawRoundRect

1:

public void drawRoundRect (float left, float top, float right, float bottom, float rx, float ry, Paint paint)

2:

public void drawRoundRect (RectF rect, float rx, float ry, Paint paint)
参数说明
left:矩形最左边的X坐标。
top:矩形最上边的y坐标。
right:矩形最右边的X坐标。
bottom:矩形最下边的y坐标。
rx:圆角的x半径。
rect:指定圆角矩形的外轮廓矩形区域
paint:绘制圆角矩形的画笔。

6.画文字——drawText

public void drawText (String text, float x, float y, Paint paint)

public void drawText (CharSequence text, int start, int end, float x, float y, Paint paint)

public void drawText (char[] text, int index, int count, float x, float y, Paint paint)

public void drawText (String text, int start, int end, float x, float y, Paint paint)
参数说明
text:文字内容。
x:文字开始时的x坐标。
y:文字开始时的y坐标。
start:表示从序列text的第start个文字开始。
end:表示到序列text的第end-1个文字结束。
rect:指定圆角矩形的外轮廓矩形区域
paint:绘文字的画笔。

三、移动Canvas坐标系

1.平移坐标系canvas.translate();

public void translate (int dx, int dy)
参数说明
dx:水平方向移动的距离,正数为右移,负数为左移。
dy:竖直方向移动的距离,正数为下移,负数为上移。

2.缩放坐标系canvas.scale();

public void scale (float sx, float sy) 
public final void scale (float sx, float sy, float px, float py)
参数说明
sx:水平方向缩放的大小,大于1则是放大,小于1则是缩小
sy:竖直方向缩放的大小,大于1则是放大,小于1则是缩小
px:缩放中心x坐标。(第一种的旋转中心坐标为(0,0))
py:缩放中心y坐标。(第一种的旋转中心坐标为(0,0))

3.旋转坐标系canvas.rotate();

public void rotate(float degrees)
public void rotate (float degrees, float px, float py)
参数说明
degrees旋转的角度,正数为顺时针旋转,负数为逆时针旋转。
px:旋转中心x坐标。(第一种的旋转中心坐标为(0,0))
py:旋转中心y坐标。(第一种的旋转中心坐标为(0,0))

四、canvas.save() 和 canvas.restore().

canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。

当我们需要对画布进行旋转,缩放,平移等操作的时候,其实我们通常都是只想对特定的元素进行操作,比如图片,一个矩形,一条线等等,但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,整个坐标系都被移动或者旋转,那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会影响画布上的别的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值