关于canvas的重要方法用法总结

首先,我们要明确的是,对于Android绘图来讲,它的坐标是这样的:
这里写图片描述

1 、画矩形

drawRect(float left, float top, float right, float bottom, Paint paint)

这个方法是画出一个矩形
关于这个方法的参数,我从这个博客里面看到的一张图片上获得了很好的解释
这里写图片描述

2 、画线

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

drawLines(float[] pts, Paint paint)

第一个方法参数的含义是这样的:

startX:起始端点的X坐标。

startY:起始端点的Y坐标。

stopX:终止端点的X坐标。

stopY:终止端点的Y坐标。

第二个方法可以同时绘制多条线,参数含义:

pts:数组中每四个为一组,一组就是一条线。

当然Paint大家都知道就是画笔,在这里画笔可以设置线宽,会用到Paint的一个方法:paint.setStrokeWidth();

3 、画布平移

translate(float dx, float dy)

这个方法是将画布平移
关于参数含义是这样的:

dx:x轴方向移动的距离

dy:y轴方向移动的距离

需要注意的是,画布平移后原本画布的(0,0)坐标被平移到(dx,dy)处,平移后原点坐标还是(0,0)而不是(dx,dy)
4 、画布缩放

scale(float sx, float sy)

scale(float sx, float sy, float px, float py)

第一个方法只有两个参数,是以原点为中心将画布缩放
第二个方法有四个参数,是以(px,py)为中心将画布缩放
各个参数的含义是这样:

sx:x轴方向缩放倍数

sy:y轴方向缩放倍数

px:缩放中心的x坐标

py:缩放中心的y坐标

5、画布旋转

rotate(float degrees)

rotate(float degrees, float px, float py)

第一个方法是以原点为中心旋转画布
第二个方法是以(px,py)为中心旋转画布
各参数含义是这样的:

degrees:旋转角度

px:旋转中心的x坐标

py:旋转中心的y坐标

需要注意的是,旋转以顺时针方向为正方向

6、画布的保存与恢复

save()

restore()

restoreToCount(int saveCount)

我们对画布进行一系列的缩放旋转等操作前可以使用save方法对当前状态进行保存。

当我们想恢复某个状态时,可以调用restore方法恢复最近一次保存的状态。

save方法会返回一个int类型的值,当我们想恢复至某个特定状态时,可以调用restoreToCount方法,将save返回的值传进去。

7、画文字

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

drawText(String text, int start, int end, float x, float y, Paint paint)

第一个方法参数含义:

text:要画的文本内容

x:文本开始坐标的x坐标

y:文本开始坐标的y坐标

paint:画笔

第二个方法参数含义:

这里只说一下多出来的几个参数

start:开始绘制的字的位置

end:节水绘制的字的位置

8、画圆

drawCircle(float cx, float cy, float radius, Paint paint)

各个参数的含义:

cx:圆中心坐标的x坐标

cy:圆中心坐标的y坐标

radius:圆半径大小

9、画椭圆

drawOval(float left, float top, float right, float bottom, Paint paint)

这个方法参数含义和画矩形类似。

10、画点

drawPoint(float x, float y, Paint paint)

public void drawPoints(float[] pts, Paint paint)

第一个方法可以画一个点

参数含义:

x:点坐标的x坐标

y:点坐标的y坐标

第二个方法可以画多个点

参数含义:

pts:数组每两个为一组,一组为一个点。

11、画椭圆

RectF oval = RectF(float left, float top, float right, float bottom)
canvas.drawOval(RectF oval, Paint paint)

RectF构造方法的四个参数的含义为:

left:椭圆最左端的x坐标

top:椭圆最顶端的y坐标

right:椭圆最右端的x坐标

bottom:椭圆最底端的y坐标

12、画弧线

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

参数含义:

第一个参数为一个oval对象

第二个参数为弧线开始的角度

第三个参数为弧线划过的角度

第四个参数为弧线和中心点是否连线

第五个参数为Paint对象

需要注意的是这里的角度是从180度开始,按照顺时针旋转

13、画多边形/画路径

Path path = new Path()
canvas.drawPath(Path path, Paint paint)

我们需要先定义一个路径对象path
然后定义多边形的路径:

path.moveTo(80, 200);// 此点为多边形的起点
path.lineTo(120, 250);
path.lineTo(80, 250);
//…. 可以添加多个点。构成多边形
path.close(); // 使终点和起点链接,构成封闭图形,如果不连接就是画路径

然后就可以通过drawPath方法将路径描绘出来,这样一个多边形就出来了

14、画圆角矩形

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

这里重点说一下rx和ry:

rx:x轴方向的圆角半径

ry:y轴方向的圆角半径

说点题外话:

在onDraw方法中可以调用invalidate()方法重新调用onDrow方法对图形进行重绘

在onDraw方法中调用postInvalidateDelayed(long delayMilliseconds)方法可以延迟绘制,延迟时长为delayMilliseconds毫秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值