`

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

 
阅读更多

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

一、对称变换

1. 对称于Y轴

其变换矩阵:

其变换为:

2. 对称于X轴:

3. 对称于原点O:

4.对称于直线y=x:

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

二、drawRegion方法的实现

Ruby代码收藏代码
  1. publicvoiddrawRegion(Imageimage_src,
  2. intx_src,inty_src,
  3. intwidth,intheight,
  4. inttransform,
  5. intx_dest,inty_dest,
  6. intanchor){
  7. if((anchor&VCENTER)!=0){
  8. y_dest-=height/2;
  9. }elseif((anchor&BOTTOM)!=0){
  10. y_dest-=height;
  11. }
  12. if((anchor&RIGHT)!=0){
  13. x_dest-=width;
  14. }elseif((anchor&HCENTER)!=0){
  15. x_dest-=width/2;
  16. }
  17. BitmapnewMap=Bitmap.createBitmap(image_src.getBitmap(),x_src,y_src,width,height);
  18. MatrixmMatrix=newMatrix();
  19. Matrixtemp=newMatrix();
  20. Matrixtemp2=newMatrix();
  21. float[]mirrorY={
  22. -1,0,0,
  23. 0,1,0,
  24. 0,0,1
  25. };
  26. temp.setValues(mirrorY);
  27. switch(transform){
  28. caseSprite.TRANS_NONE:
  29. break;
  30. caseSprite.TRANS_ROT90:
  31. mMatrix.setRotate(90,width/2,height/2);
  32. break;
  33. caseSprite.TRANS_ROT180:
  34. mMatrix.setRotate(180,width/2,height/2);
  35. break;
  36. caseSprite.TRANS_ROT270:
  37. mMatrix.setRotate(270,width/2,height/2);
  38. break;
  39. caseSprite.TRANS_MIRROR:
  40. mMatrix.postConcat(temp);
  41. break;
  42. caseSprite.TRANS_MIRROR_ROT90:
  43. mMatrix.postConcat(temp);
  44. mMatrix.setRotate(90,width/2,height/2);
  45. break;
  46. caseSprite.TRANS_MIRROR_ROT180:
  47. mMatrix.postConcat(temp);
  48. mMatrix.setRotate(180,width/2,height/2);
  49. break;
  50. caseSprite.TRANS_MIRROR_ROT270:
  51. mMatrix.postConcat(temp);
  52. mMatrix.setRotate(270,width/2,height/2);
  53. break;
  54. }
  55. mMatrix.setTranslate(x_dest,y_dest);
  56. canvas.drawBitmap(newMap,mMatrix,mPaint);
  57. }

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

分享到:
评论

相关推荐

    Android代码-安卓J2ME模拟器

    这款应用利用Android的Java环境来模拟J2ME的运行时环境,使得那些无法直接在Android上运行的J2ME应用得以兼容。开发者可以通过J2ME-Loader在Android设备上重温那些经典的J2ME游戏和应用。 **工作原理** J2ME-...

    j2me移植Android引擎

    这个过程通常包括理解J2ME和Android之间的差异,识别和解决兼容性问题,以及利用特定工具和库来加速转换。一个“实现J2ME接口的游戏引擎”可能是一个框架,它提供了一个中间层,使得J2ME代码可以在Android环境下运行...

    j2me_android_sdk1.16

    该SDK的主要功能在于封装了J2ME API,使得开发者能够利用熟悉的J2ME编程接口来构建Android应用,而无需学习全新的Android SDK。这极大地降低了学习曲线,节省了开发者的时间和精力。通过这个工具,J2ME的游戏和应用...

    android平台中使用j2me MIDP2.0中GameAPI

    创建自定义的View类,继承自SurfaceView,并重写onDraw()方法,就可以在Android上实现Layer的功能,用于绘制游戏的各个组件。 **LayerManager** 类则负责管理多个Layer,它负责控制这些Layer的显示顺序、更新和绘制...

    Android-development.rar_android_game android J2ME_site:en.pudn.c

    【标题】"Android-development.rar" 是一个针对...学习这份资料,开发者不仅可以掌握Android游戏界面设计,还能了解到如何利用已有的J2ME技能快速过渡到Android开发,对于想要拓展平台的开发者来说是非常有价值的资源。

    j2me移植到android的代码封装

    移植时,我们需要创建一个`AndroidGraphics`类,它继承自J2ME的`Graphics`,并重写其方法,将绘图操作转发给`Canvas`。例如,`drawString()`可以对应到`Canvas.drawText()`,`drawRect()`对应`Canvas.drawRect()`。 ...

    j2me_android_sdk_1.0

    Android下实现的J2ME API类库,使用此SDK可以无缝将你J2ME APP移植成android APP, 支持MIDP2.0、cldc1.0,WMA,jsr75等常用API 20111204更新新版: 1 JAD.MF文件:增加屏幕方向设置 2 JAD.MF文件:增加游戏专用摇杆...

    使用midp进行Android下实现的J2ME API类库

    本API库完全支持 支持MIDP2.0、cldc1.0,WMA,jsr75等常用API库,借助它你可以非常快速地将原J2ME应用转化为APK应用 包括: 1 案例程序源码及工程导入Eclipse即可使用 ; 2 工具包android_midp.jar ; 3 简要开发指南...

    快速转化J2ME程序为Android程序

    总的来说,J2MEBuilder提供了一种快速将J2ME应用转换为Android APK的方法,降低了迁移成本,使得开发者可以充分利用J2ME的已有资源,为Android用户提供服务。然而,开发者仍需对J2ME和Android平台的差异有所了解,...

    android上的j2me sdk1.zip

    2. **UI适配**:J2ME的用户界面组件与Android的视图组件不同,可能需要重新设计和实现UI以适应Android的Material Design原则。 3. **性能优化**:考虑到Android设备的硬件性能普遍优于J2ME的目标设备,移植时应考虑...

    Android下实现的J2ME API类库[完全支持MIDP2.0]

    本API库完全支持 支持MIDP2.0、cldc1.0,WMA,jsr75等常用API库,借助它你可以非常快速地将原J2ME应用转化为APK应用 包括: 1 案例程序源码及工程导入Eclipse即可使用 2 工具包android_midp.jar 3 简要开发指南dev...

    开发中j2me与android的对比

    至于旋转,J2ME通常使用drawRegion或drawImage配合旋转角度,而Android可以创建一个新的Bitmap进行翻转后再绘制,或者使用Matrix进行更复杂的图像变换。 综上所述,J2ME和Android在开发环境、工程组织、代码结构...

    j2me移植android

    然而,随着智能手机的普及,Android成为了主流的操作系统,许多开发者和用户开始寻找将J2ME应用移植到Android平台的方法。本文将详细介绍J2ME应用移植到Android的步骤、挑战以及解决方案。 首先,理解两者之间的...

    跟我学制作Pak文件j2me.rar_"www.matrix.org.cn"_j2me_j2me matrix.jar_j2me

    通过学习这个教程和参考提供的项目,你可以深入理解J2ME中Pak文件的创建和使用方法,这对于开发高效、轻量级的移动应用非常有帮助。记得在实际操作时,遵循良好的编程实践,如资源的正确管理,防止内存泄漏,以及...

    Android与J2ME平台间即时通信的研究与实现

    通过对比分析Android与J2ME平台的特点,并结合XMPP协议的优势,本文提出了一种实现Android与J2ME平台间即时通信的方法。该方法不仅满足了不同智能手机平台间的通信需求,而且具有较好的兼容性和可扩展性。未来,随着...

    J2ME游戏移植到Android手机

    - **绘图**:J2ME的Graphics类与Android的Canvas类类似,但Android提供了更丰富的绘图API,如Paint类。 - **事件处理**:J2ME的键盘事件通过keyPressed、keyRepeated和keyReleased方法处理,Android则使用...

    J2ME实现画图程序

    在这个J2ME实现的画图程序中,我们主要关注的是如何在移动设备上利用Java Micro Edition(J2ME)框架创建一个简单的画图应用。J2ME是Java平台的一个子集,专门用于嵌入式设备,如手机和PDA。在这个程序中,核心功能...

    android J2ME加载器 可以在android机上运行java游戏

    Android平台上的J2ME加载器是一款特殊的软件,它允许用户在Android设备上运行基于Java ME(J2ME)开发的游戏和应用程序。Java ME是Java的一个轻量级版本,主要用于移动设备和嵌入式系统,因此许多早期的移动游戏都是...

    两个小时精通Android开发之界面篇【j2me移植】

    Android平台除了在一些接口上采用了和J2ME不一样的名称之外,基本的接口内容还是一样的,那么移植J2ME到Android平台最方便的方法就是利用Android平台的接口重写J2ME的接口,本着这个思路笔者写了一个Wrap包,利用这...

Global site tag (gtag.js) - Google Analytics