在用Android实现J2ME的drawRegion方法时,发现网上介绍的镜像翻转都是用像素数组行变列实现的,其实这还是j2me式的实现方法,Android中有Matrix类,如果学过计算机图形学,只要按其原理,进行矩阵变换即可。
一、对称变换
1. 对称于Y轴
其变换矩阵:
其变换为:
2. 对称于X轴:
3. 对称于原点O:
4.对称于直线y=x:
5. 对称于直线y=-x:
二、drawRegion方法的实现
- publicvoiddrawRegion(Imageimage_src,
- intx_src,inty_src,
- intwidth,intheight,
- inttransform,
- intx_dest,inty_dest,
- intanchor){
- if((anchor&VCENTER)!=0){
- y_dest-=height/2;
- }elseif((anchor&BOTTOM)!=0){
- y_dest-=height;
- }
- if((anchor&RIGHT)!=0){
- x_dest-=width;
- }elseif((anchor&HCENTER)!=0){
- x_dest-=width/2;
- }
- BitmapnewMap=Bitmap.createBitmap(image_src.getBitmap(),x_src,y_src,width,height);
- MatrixmMatrix=newMatrix();
- Matrixtemp=newMatrix();
- Matrixtemp2=newMatrix();
- float[]mirrorY={
- -1,0,0,
- 0,1,0,
- 0,0,1
- };
- temp.setValues(mirrorY);
- switch(transform){
- caseSprite.TRANS_NONE:
- break;
- caseSprite.TRANS_ROT90:
- mMatrix.setRotate(90,width/2,height/2);
- break;
- caseSprite.TRANS_ROT180:
- mMatrix.setRotate(180,width/2,height/2);
- break;
- caseSprite.TRANS_ROT270:
- mMatrix.setRotate(270,width/2,height/2);
- break;
- caseSprite.TRANS_MIRROR:
- mMatrix.postConcat(temp);
- break;
- caseSprite.TRANS_MIRROR_ROT90:
- mMatrix.postConcat(temp);
- mMatrix.setRotate(90,width/2,height/2);
- break;
- caseSprite.TRANS_MIRROR_ROT180:
- mMatrix.postConcat(temp);
- mMatrix.setRotate(180,width/2,height/2);
- break;
- caseSprite.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,希望对大家有帮助。
分享到:
相关推荐
自己搜集整理一份J2ME游戏移植Android文档以及一个实现J2ME接口的一个游戏引擎
J2ME-Loader Android application which runs J2ME apps http://4pda.ru/forum/index.php?showtopic=824201
Android下实现的J2ME API类库,使用此SDK可以无缝将你J2ME APP移植成android APP, 支持MIDP2.0、cldc1.0,WMA,jsr75等常用API 20111204更新新版: 1 JAD.MF文件:增加屏幕方向设置 2 JAD.MF文件:增加游戏专用摇杆...
本API库完全支持 支持MIDP2.0、cldc1.0,WMA,jsr75等常用API库,借助它你可以非常快速地将原J2ME应用转化为APK应用 包括: 1 案例程序源码及工程导入Eclipse即可使用 ; 2 工具包android_midp.jar ; 3 简要开发指南...
SDK在android上封装了J2ME API,可以无缝将J2ME 程序移植到到android平台,使用SDK可以快速将J2ME游戏 移植到android平台
本API库完全支持 支持MIDP2.0、cldc1.0,WMA,jsr75等常用API库,借助它你可以非常快速地将原J2ME应用转化为APK应用 包括: 1 案例程序源码及工程导入Eclipse即可使用 2 工具包android_midp.jar 3 简要开发指南dev...
j2me中制作Pak文件,来自www.matrix.org.cn
android平台中j2me MIDP2.0中GameAPI中几个工具类移植版本, 四个类Layer、LayerManager、Sprite、TiledLayer
J2ME,J2EE与Android开发学习资料;J2ME,J2EE与Android开发学习资料;J2ME,J2EE与Android开发学习资料
$兩小時精通Android開發之界面篇! 教你如何快速的開發Android遊戲~ 如果有J2me的底子,可以交妳怎麼移植J2me的遊戲
j2me 实现抛物线的两种方法 j2me 实现抛物线的两种方法 j2me 实现抛物线的两种方法 j2me 实现抛物线的两种方法 j2me 实现抛物线的两种方法
Android平台除了在一些接口上采用了和J2ME不一样的名称之外,基本的接口内容还是一样的,那么移植J2ME到Android平台最方便的方法就是利用Android平台的接口重写J2ME的接口,本着这个思路笔者写了一个Wrap包,利用这...
j2me图片缩放方法,很实用的小方法,来看看吧
近年来伴着Android智能手机的迅速崛起,如何迅速移植已有的J2me应用到Android让其发挥余力,便成了开发人员急于解决的问题,借助本文档你可以非常快速地将原J2ME应用转化为APK应用。还等什么,马上行动吧....
J2ME URLEncoder 和 URLDecoder 类的实现 实现J2ME没有的API
记载了J2ME游戏如何移植成android游戏的方法。给很多拥有J2ME游戏的朋友想要将手中的资源再次利用起来就下载来看看把。。。
j2me移植android,里面有很详细的介绍,下载来看看把!
J2ME开发 J2ME开发 J2ME开发 J2ME开发
这是我开发的J2ME实现画图程序,希望大家能互相学习交流