一. 前言
改变画布的性质,改变之后,任何的后续操作都会受到影响。
包括,平移,缩放,旋转,错切。
二. 平移
1. 作用
移动画布(实际上是移动坐标系)
2. 具体使用
1 2 3
|
canvas.translate(200, 100)
|

三. 缩放
1. 作用
放大 / 缩小 画布的倍数。
2. 具体使用
1 2 3 4 5 6 7
|
public final void scale(float sx, float sy)
public final void scale (float sx, float sy, float px, float py)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
RectF rect = new RectF(0,-200,200,0);
canvas.drawRect(rect, mPaint1);
canvas.scale(1.5f, 1.5f);
canvas.drawRect(rect,mPaint2);
RectF rect = new RectF(0,-200,200,0);
canvas.drawRect(rect, mPaint1);
canvas.scale(1.5f, 1.5f, 100,0);
canvas.drawRect(rect,mPaint2);
|

3. 注意
当缩放倍数为负数时,会先进行缩放,然后根据不同情况进行 图形翻转,设缩放倍数为(a,b),旋转中心为(px,py)。
1 2 3 4 5
| ① a<0,b>0:以px为轴翻转
② a>0,b<0:以py为轴翻转
③ a<0,b<0:以旋转中心翻转
|

四. 旋转
1. 作用
角度增加方向为顺时针(区别于数学坐标系,角度方向参考绘制弧度时候的起始角度图)

2. 具体使用
1 2 3 4 5 6 7 8 9 10 11
|
public final void rotate(float degrees)
canvas.rotate(90);
public final void rotate(float degrees, float px, float py)
canvas.rotate(90,30,50);
|

五. 错切
1. 作用
将画布在x方向倾斜a角度、在y方向倾斜b角度。
2. 具体使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
public void skew(float sx, float sy)
canvas.translate(300, 500);
canvas.drawRect(20, 20, 400, 200, mPaint2);
canvas.skew(1f, 0); canvas.drawRect(20, 20, 400, 200, mPaint1);
canvas.skew(-1f, 0); canvas.drawRect(20, 20, 400, 200, mPaint1);
canvas.skew(0, 1f); canvas.drawRect(20, 20, 400, 200, mPaint1);
canvas.skew(0, -1f); canvas.drawRect(20, 20, 400, 200, mPaint1);
|
