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

三. 缩放
1. 作用
放大 / 缩小 画布的倍数。
2. 具体使用
| 12
 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)
 
 | 
| 12
 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)。
| 12
 3
 4
 5
 
 | ① a<0,b>0:以px为轴翻转
 ② a>0,b<0:以py为轴翻转
 
 ③ a<0,b<0:以旋转中心翻转
 
 | 

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

2. 具体使用
| 12
 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. 具体使用
| 12
 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);
 
 | 
