日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android画图之Matrix(一)

發布時間:2025/6/17 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android画图之Matrix(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Matrix?,中文里叫矩陣,高等數學里有介紹,在圖像處理方面,主要是用于平面的縮放、平移、旋轉等操作。

????????首先介紹一下矩陣運算。加法和減法就不用說了,太簡單了,對應位相加就好。圖像處理,主要用到的是乘法?。下面是一個乘法的公式:

?

?

??????? 在?Android?里面,?Matrix?由?9?個?float?值構成,是一個?3*3?的矩陣。如下圖。

????????

沒專業工具,畫的挺難看。解釋一下,上面的?sinX?和?cosX?,表示旋轉角度的?cos?值和?sin?值,注意,旋轉角度是按順時針方向計算的。?translateX?和?translateY?表示?x?和?y?的平移量。?scale?是縮放的比例,?1?是不變,?2?是表示縮放?1/2?,這樣子。

????????下面在?Android?上試試?Matrix?的效果。

Java代碼?

1.????? public?class?MyView?extends?View?{??

2.????? ??

3.????? ????private?Bitmap?mBitmap;??

4.????? ??

5.????? ????private?Matrix?mMatrix?=?new?Matrix();??

6.????? ??

7.????? ????public?MyView(Context?context)?{??

8.????? ??

9.????? ????????super(context);??

10.? ??

11.? ????????initialize();??

12.? ??

13.? ????}??

14.? ??

15.? ????private?void?initialize()?{???????

16.? ??

17.? ????????mBitmap?=?((BitmapDrawable)getResources().getDrawable(R.drawable.show)).getBitmap();??????????

18.? ??

19.? ????????float?cosValue?=?(float)?Math.cos(-Math.PI/6);??

20.? ??

21.? ????????float?sinValue?=?(float)?Math.sin(-Math.PI/6);??

22.? ??

23.? ????????mMatrix.setValues(??

24.? ??

25.? ????????????????new?float[]{??

26.? ??

27.? ????????????????????????cosValue,?-sinValue,?100,??

28.? ??

29.? ????????????????????????sinValue,?cosValue,?100,??

30.? ??

31.? ????????????????????????0,?0,?2});??

32.? ??

33.? ????}??

34.? ??

35.? ????@Override?protected?void?onDraw(Canvas?canvas)?{??

36.? ??

37.? //??????super.onDraw(canvas);??//當然,如果界面上還有其他元素需要繪制,只需要將這句話寫上就行了。??

38.? ??

39.? ????????canvas.drawBitmap(mBitmap,?mMatrix,?null);??

40.? ??

41.? ????}??

42.? ??

43.? }??

?運行結果如下:

? ? ???以左上角為頂點,縮放一半,逆時針旋轉30度,然后沿x軸和y軸分別平移50個像素,代碼 里面寫的是100,為什么是平移50呢,因為縮放了一半。

? ? ??大家可以自己設置一下Matrix的值,或者嘗試一下兩個Matrix相乘,得到的值設置進去,這樣才能對Matrix更加熟練。

這里講的直接賦值的方式也許有點不好理解,不過還好,?andrid?提供了對矩陣的更方便的方法,下一篇介紹?。

轉載于:https://www.cnblogs.com/deve/archive/2012/02/27/2569026.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Android画图之Matrix(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。