畫(huà)圖部分代碼改為:
Paint p=new Paint();
p.setTextSize(100);//設(shè)置字大小
p.setColor(Color.rgb(255,100,100));//畫(huà)筆為深粉紅色
canvas.drawText("早安!",400,100,p);//畫(huà)字
canvas.rotate(10);//轉(zhuǎn)坐標(biāo)系(順時(shí)針轉(zhuǎn)10度)
canvas.drawText("午安!",400,100,p);//畫(huà)字
canvas.translate(0,100);//平移坐標(biāo)系(向下100)
canvas.drawText("晚安!",400,100,p);//畫(huà)字
canvas.scale(2,1);//縮放坐標(biāo)系(x方向變?yōu)樵瓉?lái)2倍,y方向不變)
canvas.drawText("午安!",400,100,p);//畫(huà)字

代碼

效果
這段代碼使用了3種坐標(biāo)變換(旋轉(zhuǎn),平移,縮放),在新的坐標(biāo)系中畫(huà)圖。利用這些變換可以畫(huà)出有角度的字以及各種奇妙的組合圖形,對(duì)界面繪制很有用。
其中旋轉(zhuǎn)rotate和縮放scale操作還可以多幾個(gè)參數(shù)來(lái)指定參考點(diǎn),例如:
canvas.rotate(10,20,35);//以(20,35)為不動(dòng)點(diǎn),順時(shí)針轉(zhuǎn)10度`
canvas.scale(-1,2,3,4);//以(3,4)為中心,橫向翻轉(zhuǎn),縱向放大一倍
注意一旦對(duì)畫(huà)圖坐標(biāo)系改動(dòng),之后的繪圖代碼都按照最新的坐標(biāo)系執(zhí)行繪制。
有時(shí)我們?cè)诟淖冏鴺?biāo)系前要保存當(dāng)前坐標(biāo)系,以便把坐標(biāo)系復(fù)原。這時(shí)使用matrix(矩陣/坐標(biāo)系)來(lái)保存。下面給一個(gè)例子:
Paint p=new Paint();
p.setTextSize(100);//設(shè)置字大小
p.setColor(Color.rgb(255,100,100));//畫(huà)筆為深粉紅色
Matrix m=canvas.getMatrix();//保存當(dāng)前坐標(biāo)系到新建坐標(biāo)系m
canvas.rotate(10);//轉(zhuǎn)坐標(biāo)系(順時(shí)針轉(zhuǎn)10)
canvas.setMatrix(m);//把當(dāng)前坐標(biāo)系改為保存的坐標(biāo)系m
canvas.drawText("早安!",400,100,p);//畫(huà)字

代碼

效果
可以看到最終畫(huà)出的字是沒(méi)有旋轉(zhuǎn)過(guò)的。這是因?yàn)槭褂玫氖切D(zhuǎn)之前保存的坐標(biāo)系。