Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android矩陣詳解

android矩陣詳解

編輯:關於Android編程



vcPmtcTL9bfFoaLGvdLGoaLQ/deqtciy2df3oaM8L3A+CjxwPgrU2kFuZHJvaWTA78Pmo6xNYXRyaXjTyTm49mZsb2F0JiMyMDU0MDu5ubPJo6zKx9K7uPYzKjO1xL7Y1fOho9fuusO8x9ehoaPI58/CzbyjujwvcD4KPHA+CjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20140615/2014061509403848.gif" alt="\">

解釋一下,上面的sinX和cosX,表示旋轉角度的cos值和sin值,注意,旋轉角度是按順時針方向計算的。

translateX和translateY表示x和y的平移量。scale是縮放的比例,1是不變,2是表示縮放1/2,這樣子。

在android.graphics.Matrix中有對應旋轉的函數:
Matrix matrix = new Matrix();
matrix.setRotate(90);
在程序中輸出矩陣:System.out.println("matrix:" + matrix.toString());

你會發現一樣東西:

\

與上面的公式基本完全一樣(android.graphics.Matrix采用的是浮點數,而我們采用的整數)。

  1. // 定義矩陣對象
  2. Matrix matrix = new Matrix();
  3. float[] values ={0.707f,-0.707f,0.0f,0.707f,0.707f,0.0f,0.0f,0.0f,1.0f};
  4. matrix.setValues(values);
  5. System.out.println("matrix:" + matrix.toString());
  6. //bmp.getWidth(), 500分別表示重繪後的位圖寬高
  7. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), 500,
  8. matrix, true);
  9. // 在畫布上繪制旋轉後的位圖
  10. //放在坐標為0,200的位置
  11. canvas.drawBitmap(dstbmp, 0, 200, null);

    \


    \

    下面介紹幾個基本函數的用法:

    setRotate(float degrees) :直接使圖片旋轉一定的角度,負數為向左旋轉,正數為向右旋轉。

    setTranslate(float dx, float dy) 使圖片平移

    setScale(float sx, float sy) 使圖片縮放

    setSkew(float kx, float ky) 使圖片傾斜

    setRotate(float degrees, float px, float py) 使圖片以某一點為中心旋轉

    reset() 是矩陣變為單位矩陣,即圖片保持不變

    對應上述的所有函數,都有相應的preXX和postXX版本,它們所對應的功能如上所述。下面是一個簡單的例子。

    setRotate(30,a,b)的功能是將圖片以(a,b)為中心向右旋轉30°。

    下面可以用preXX來完成相應的功能:

    matrix.setTranslate(a,b);

    matrix.preRotate(30);

    matrix.preTranslate(-a,-b);

    從意義上來說可以理解為將圖片平移(-a,-b),然後向右旋轉30°,最後再將旋轉後的圖片平移(a,b)即可完成將圖片以(a,b)向右旋轉30°的功能。



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved