aide安卓編程10-坐標(biāo)系的旋轉(zhuǎn)平移縮放

畫(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)系。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容