正文

基本的圖像縮放和旋轉(zhuǎn)(3)

Android多媒體開發(fā)高級編程 作者:(美)艾佛瑞


正如在圖3-6中所看到的那樣,這會導(dǎo)致圖像傾斜。它是因為第一行數(shù)字而傾斜,其操作每個像素的x值,根據(jù)每個像素的y值進(jìn)行改變。隨著y值增加,因為向圖像的下部移動,所以x值增加,從而導(dǎo)致圖像傾斜。如果使用一個負(fù)值,那么圖像將以相反的方向傾斜。同時,還將注意到該圖像由于坐標(biāo)變化而被截斷。因此,如果要執(zhí)行這樣的操作,那么需要增加結(jié)果位圖的大小,如圖3-7所示。

alteredBitmap = Bitmap.createBitmap(bmp.getWidth()*2,bmp.getHeight(),

bmp.getConfig());

圖3-7  應(yīng)用相同的自定義矩陣后顯示的第二幅圖像,但采用更大的寬度以使圖像不會被截斷

這些矩陣轉(zhuǎn)換非常強(qiáng)大;同時我們也會發(fā)現(xiàn)手動處理它們會很麻煩。但是,對于大部分想要通過手動處理矩陣而實現(xiàn)的工作,它們對應(yīng)的公式所需要的數(shù)學(xué)知識超出了本書的范圍。然而,如果有興趣深入學(xué)習(xí),那么網(wǎng)上有足夠多的資源。一個好的起點是Wikipedia的Transformation Matrix(轉(zhuǎn)換矩陣)文章:http://en.wikipedia.org/wiki/Transformation_matrix。

3.3.2  Matrix類的方法

然而,現(xiàn)在要做的是探索Matrix類的其他方法,因為它們幫助我們完成了大部分想要完成的工作,而無須重新學(xué)習(xí)高中和大學(xué)數(shù)學(xué)課程。

與自己創(chuàng)建Matrix對象中的數(shù)字不同,針對想要使用的轉(zhuǎn)換,可以簡單地調(diào)用相應(yīng)的方法。

下述的每個代碼片段都可以替換“在位圖上繪制位圖”示例中的canvas.drawBitmap代碼行。

1. 旋轉(zhuǎn)

內(nèi)置的方法之一是setRotate方法。它采用一個浮點數(shù)表示旋轉(zhuǎn)的角度。圍繞默認(rèn)點(0,0),正數(shù)將順時針旋轉(zhuǎn)圖像,而負(fù)數(shù)將逆時針旋轉(zhuǎn)圖像,其中默認(rèn)點是圖像的左上角,如圖3-8所示。


上一章目錄下一章

Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號