首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

利用Android的Matrix种实现J2ME的drawRegion的镜像方法

2012-08-28 
利用Android的Matrix类实现J2ME的drawRegion的镜像方法??????在用Android实现J2ME的drawRegion方法时,发现

利用Android的Matrix类实现J2ME的drawRegion的镜像方法

??????在用Android实现J2ME的drawRegion方法时,发现网上介绍的镜像翻转都是用像素数组行变列实现的,其实这还是j2me式的实现方法,Android中有Matrix类,如果学过计算机图形学,只要按其原理,进行矩阵变换即可。

?

?一、对称变换

?

???利用Android的Matrix种实现J2ME的drawRegion的镜像方法

?

1. 对称于Y轴

????其变换矩阵:

????利用Android的Matrix种实现J2ME的drawRegion的镜像方法????

???

??? 其变换为:

? ??利用Android的Matrix种实现J2ME的drawRegion的镜像方法

?

2. 对称于X轴:

????利用Android的Matrix种实现J2ME的drawRegion的镜像方法??

?

3. 对称于原点O:

??? 利用Android的Matrix种实现J2ME的drawRegion的镜像方法

?

4.?对称于直线y=x:?

??? 利用Android的Matrix种实现J2ME的drawRegion的镜像方法

?

5. 对称于直线y=-x:

????利用Android的Matrix种实现J2ME的drawRegion的镜像方法

?

二、drawRegion方法的实现

?

public void drawRegion(Image image_src,                int x_src, int y_src,               int width, int height,                int transform,               int x_dest, int y_dest,               int anchor){if((anchor&VCENTER) != 0){y_dest -= height/2;}else if((anchor&BOTTOM) != 0){y_dest -= height;}if((anchor&RIGHT) != 0){x_dest -= width;}else if((anchor&HCENTER) != 0){x_dest -= width/2;}Bitmap newMap = Bitmap.createBitmap(image_src.getBitmap(), x_src, y_src, width, height);Matrix mMatrix = new Matrix();Matrix temp = new Matrix();Matrix temp2 = new Matrix();float[] mirrorY = {-1, 0, 0,0, 1, 0,0, 0, 1};temp.setValues(mirrorY);switch(transform){case Sprite.TRANS_NONE:break;case Sprite.TRANS_ROT90:mMatrix.setRotate(90,width/2, height/2);break;case Sprite.TRANS_ROT180:mMatrix.setRotate(180,width/2, height/2);break;case Sprite.TRANS_ROT270:mMatrix.setRotate(270,width/2, height/2);break;case Sprite.TRANS_MIRROR:mMatrix.postConcat(temp);break;case Sprite.TRANS_MIRROR_ROT90:mMatrix.postConcat(temp);mMatrix.setRotate(90,width/2, height/2);break;case Sprite.TRANS_MIRROR_ROT180:mMatrix.postConcat(temp);mMatrix.setRotate(180,width/2, height/2);break;case Sprite.TRANS_MIRROR_ROT270:mMatrix.postConcat(temp);mMatrix.setRotate(270,width/2, height/2);break;}mMatrix.setTranslate(x_dest, y_dest);canvas.drawBitmap(newMap, mMatrix, mPaint);}

????

???

??? 利用Matrix类,不止可实现对称变换,还可以实现其它的几何变换,包括组合变换。附件中是从网上找到的关于图形变换原理的ppt,希望对大家有帮助。利用Android的Matrix种实现J2ME的drawRegion的镜像方法

?

?

?

?

1 楼 seven060601 2010-08-23   试了一下,没有起作用,改了一下,应该用修正的mMatrix创建newMap,再画就ok了。 2 楼 hydrogen2008 2010-08-26   这个不对吧,楼主能不能放一个正确的 3 楼 shuiquan8830 2011-07-28   来看看----

热点排行