最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 矩陣ColorMatrix

 更新時間:2016年10月17日 11:11:28   投稿:lqh  
這篇文章主要介紹了Android 矩陣ColorMatrix的相關(guān)資料,需要的朋友可以參考下

中文名:坐標(biāo)矩陣

高等數(shù)學(xué)里有介紹,在圖像處理方面,主要是用于平面的縮放、平移、旋轉(zhuǎn)等操作。

在Android里面,Matrix由9個float值構(gòu)成,是一個3*3的矩陣。最好記住。如下圖

各個字段的含義:

上面的sinX和cosX,表示旋轉(zhuǎn)角度的cos值和sin值,注意,旋轉(zhuǎn)角度是按順時針方向計算的。

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

如何使用

set,pre,post方法

Matrix調(diào)用一系列set,pre,post方法時,可視為將這些方法插入到一個隊列.當(dāng)然,按照隊列中從頭至尾的順序調(diào)用執(zhí)行.
其中

pre表示在隊頭插入一個方法,

post表示在隊尾插入一個方法.

而set表示把當(dāng)前隊列清空,并且總是位于隊列的最中間位置.

當(dāng)執(zhí)行了一次set后:pre方法總是插入到set前部的隊列的最前面,post方法總是插入到set后部的隊列的最后面

例一:

Matrix m = new Matrix();
m.setRotate(45); 
m.setTranslate(80, 80);

只有m.setTranslate(80, 80)有效,因為m.setRotate(45);被清除.

例子二:

Matrix m = new Matrix();
m.setTranslate(80, 80);
m.postRotate(45);

先執(zhí)行m.setTranslate(80, 80);后執(zhí)行m.postRotate(45);

例子三:

Matrix m = new Matrix();
m.setTranslate(80, 80);
m.preRotate(45);

先執(zhí)行m.setTranslate(80, 80);后執(zhí)行m.preRotate(45);

例子四:

Matrix m = new Matrix();
m.preScale(2f,2f);  
m.preTranslate(50f, 20f);  
m.postScale(0.2f, 0.5f);  
m.postTranslate(20f, 20f); 

執(zhí)行順序:m.preTranslate(50f, 20f)-->m.preScale(2f,2f)-->m.postScale(0.2f, 0.5f)-->m.postTranslate(20f, 20f)
注意:m.preTranslate(50f, 20f)比m.preScale(2f,2f)先執(zhí)行,因為它查到了隊列的最前端.

例子五:

Matrix m = new Matrix();
m.postTranslate(20, 20);  
m.preScale(0.2f, 0.5f);
m.setScale(0.8f, 0.8f);  
m.postScale(3f, 3f);
m.preTranslate(0.5f, 0.5f);

執(zhí)行順序:m.preTranslate(0.5f, 0.5f)-->m.setScale(0.8f, 0.8f)-->m.postScale(3f, 3f)
注意:m.setScale(0.8f, 0.8f)清除了前面的m.postTranslate(20, 20)和m.preScale(0.2f, 0.5f);  

其它一些具體的方法舉例:

1、setTranslate(float ds,float dy):控制Matrix進(jìn)行平移。
2、setSkew(float kx,float ky,float px,float py):控制Matrix以px、py為軸心進(jìn)行傾斜。kx、ky為X、Y方向上的傾斜距離。
3、setSkew(float kx,float ky):控制Matrix進(jìn)行傾斜。kx、ky為X、Y方向上的傾斜距離。
4、setRotate(float degrees):控制Matrix進(jìn)行旋轉(zhuǎn),degrees控制旋轉(zhuǎn)的角度。
5、setRotate(float degrees,float px,float py):設(shè)置以px、py為軸心進(jìn)行旋轉(zhuǎn),degrees控制旋轉(zhuǎn)的角度。
6、setScale(float sx,float sy):設(shè)置Matrix進(jìn)行縮放,sx、sy控制X、Y方向上的縮放比例。
7、setScale(float sx,float sy,float px,float py):設(shè)置Matrix以px、py為軸心進(jìn)行縮放,sx、sy控制X、Y方向上的縮放比例。

寫在最后:

這里對圖片進(jìn)行移動,旋轉(zhuǎn)之類的處理,除了通過Matrix類,還可以通過Animation動畫來實現(xiàn)

他們之間的不同點在于:

1.使用Matrix類的時候,圖片的移動和旋轉(zhuǎn),只能在控件上面。這里面控件本身沒有動,控件里面的內(nèi)容動了。在實際做的時候需要考慮控件本身的大小,因為超出部分不會顯示。

2.使用Animation動畫來實現(xiàn)的時候,動的是控件本身。

相關(guān)文章

最新評論

卢湾区| 栖霞市| 日照市| 裕民县| 包头市| 黎城县| 延吉市| 阳东县| 东阿县| 建湖县| 泾阳县| 湘潭县| 东海县| 淮南市| 富平县| 宁明县| 永春县| 九寨沟县| 宁乡县| 汾阳市| 开平市| 阿拉善右旗| 昆山市| 扶风县| 郯城县| 新兴县| 邮箱| 青神县| 武邑县| 新建县| 荔浦县| 阜新| 菏泽市| 龙山县| 凤山县| 松潘县| 中西区| 邢台县| 汽车| 乌兰浩特市| 社旗县|