这里用android API封装了个drawRegion,效率还是蛮高,并不需要使用创建临时对象,这里贴出主要代码 canvas 源自于android.graphics.Canvas public void drawRegion(Image img, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int anchor) { canvas.save(); setAnchor(anchor); int ix = 0, iy = 0; switch (transform) { case Sprite.TRANS_NONE: // 0 break; case Sprite.TRANS_ROT90: // 90 canvas.rotate(90, x_dest, y_dest); iy = height; break; case Sprite.TRANS_ROT180: // 180 canvas.rotate(180, x_dest, y_dest); iy = height; ix = width; break; case Sprite.TRANS_ROT270: // 270 canvas.rotate(270, x_dest, y_dest); ix = width; break; case Sprite.TRANS_MIRROR: // M canvas.scale(-1, 1, x_dest, y_dest);// 镜像 ix = width; break; case Sprite.TRANS_MIRROR_ROT90: // M90 j2me<-->android 270 canvas.scale(-1, 1, x_dest, y_dest);// 镜像 canvas.rotate(270, x_dest, y_dest); ix = width; iy = height; break; case Sprite.TRANS_MIRROR_ROT180: // M180 canvas.scale(-1, 1, x_dest, y_dest);// 镜像 canvas.rotate(180, x_dest, y_dest); iy = height; break; case Sprite.TRANS_MIRROR_ROT270: // M270 j2me<-->android 90 canvas.scale(-1, 1, x_dest, y_dest);// 镜像90 canvas.rotate(90, x_dest, y_dest); break; } canvas.clipRect(x_dest - ix, y_dest - iy, x_dest - ix + width, y_dest - iy + height); canvas.drawBitmap(img.mImage, x_dest - ix - x_src, y_dest - iy - y_src, paint); canvas.restore();

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android数据存储(3)SQLite简介和简单的登录与注册源代码
  3. android 第一行代码(第二版)Litepal遇到的问题
  4. ListView 自动滚动
  5. Android编程判断手机or平板
  6. Android异步线程与Bundle消息传递
  7. Android(安卓)WebView 中 JS 与Java之间通信
  8. 判断当前应用程序处于前台还是后台 ANDROID
  9. 关于游戏开发的一些代码

随机推荐

  1. Android中解决图像解码导致的OOM问题
  2. C#/IOS/Android通用加密解密方法
  3. 我的Android(安卓)NDK之旅(四),android串口
  4. 更改Android(安卓)AVD模拟器创建路径位置
  5. 【Android】注解框架(二) 基础知识(Java注解
  6. 通过android代码获取android系统的imei、
  7. 使用平台的风格和主题
  8. WebView的使用之Android与JS通过WebView
  9. 【Android(安卓)应用开发】Android资源文
  10. Android跨进程通信IPC