translate 平移后原點(0,0)坐標點的位置也會移動
canvas.drawRect(0,0, 400, 400, mPaint);
canvas.translate(50, 50);
mPaint.setColor(Color.GRAY);
canvas.drawRect(0,0, 400, 400, mPaint);
canvas.drawLine(0, 0, 600,600, mPaint);

平移.png
scale 縮放
canvas.drawRect(200,200, 700,700, mPaint);
canvas.scale(0.5f, 0.5f);
mPaint.setColor(Color.GRAY);
canvas.drawRect(200,200, 700,700, mPaint);
canvas.drawLine(0,0, 400, 600, mPaint);
rotate 旋轉(zhuǎn)
canvas.translate(50,50);
canvas.drawRect(0,0, 700,700, mPaint);
canvas.rotate(45);
mPaint.setColor(Color.GRAY);
canvas.drawRect(0,0, 700,700, mPaint);
//以某個中心的坐標選擇
canvas.drawRect(400, 400, 900, 900, mPaint);
canvas.rotate(45, 650, 650); //px, py表示旋轉(zhuǎn)中心的坐標
mPaint.setColor(Color.GRAY);
canvas.drawRect(400, 400, 900, 900, mPaint);
skew 傾斜
canvas.drawRect(0,0, 400, 400, mPaint);
// canvas.skew(1, 0); //在X方向傾斜45度,Y軸逆時針旋轉(zhuǎn)45
canvas.skew(0, 1); //在y方向傾斜45度, X軸順時針旋轉(zhuǎn)45
mPaint.setColor(Color.GRAY);
canvas.drawRect(0, 0, 400, 400, mPaint);
clip 切割
//切割所選區(qū)域
canvas.drawRect(200, 200,700, 700, mPaint);
mPaint.setColor(Color.GRAY);
canvas.drawRect(200, 800,700, 1300, mPaint);
canvas.clipRect(200, 200,700, 700); //畫布被裁剪
canvas.drawCircle(100,100, 100,mPaint); //坐標超出裁剪區(qū)域,無法繪制
canvas.drawCircle(300, 300, 100, mPaint); //坐標區(qū)域在裁剪范圍內(nèi),繪制成功
//切割所選以外區(qū)域
canvas.drawRect(200, 200,700, 700, mPaint);
mPaint.setColor(Color.GRAY);
canvas.drawRect(200, 800,700, 1300, mPaint);
canvas.clipOutRect(200,200,700,700); //畫布裁剪外的區(qū)域
canvas.drawCircle(100,100,100,mPaint); //坐標區(qū)域在裁剪范圍內(nèi),繪制成功
canvas.drawCircle(300, 300, 100, mPaint);//坐標超出裁剪區(qū)域,無法繪制
Matrix 矩陣:也可用矩陣做以上操作
canvas.drawRect(0,0,700,700, mPaint);
Matrix matrix = new Matrix();
// matrix.setTranslate(50,50);
// matrix.setRotate(45);
matrix.setScale(0.5f, 0.5f);
canvas.setMatrix(matrix);
mPaint.setColor(Color.GRAY);
canvas.drawRect(0,0,700,700, mPaint);