Android里面没有drawRegion只好重写,

不废话,上代码:

public static void drawRegion(Canvas g,Bitmap bitmap, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest,int anchor){ Matrix matrix = new Matrix(); Matrix mirror = new Matrix(); Bitmap img = null; Rect src = new Rect(); src.left = x_src; src.right = x_src + width; src.top = y_src; src.bottom = y_src + height; float mirrorArray[] = { -1, 0, 0, 0, 1, 0, 0, 0, 1 }; mirror.setValues(mirrorArray); switch (transform) { case TRANS_NONE: { break; } case TRANS_ROT90: { matrix.preRotate(90); img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true); break; } case TRANS_ROT180: { matrix.preRotate(180); img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true); break; } case TRANS_ROT270: { matrix.preRotate(270); img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true); break; } case TRANS_MIRROR: { // TODO matrix.postConcat(mirror); img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true); break; } case TRANS_MIRROR_ROT90: { // TODO matrix.postConcat(mirror); matrix.preRotate(90); img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true); break; } case TRANS_MIRROR_ROT180: { // TODO matrix.postConcat(mirror); matrix.preRotate(180); img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true); break; } case TRANS_MIRROR_ROT270: { // TODO matrix.postConcat(mirror); matrix.preRotate(270); img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true); break; } } g.drawBitmap(img, x_dest, y_dest, null); }

这里主要是利用了Matrix来处理。

drawBitmap里面有对矩阵的支持。

小tips:在Matrix相关类里分别有Preconcats matrix与Postconcats matrix

Preconcats matrix相当于右乘矩阵,Postconcats matrix相 当于左乘矩阵。

刚才google翻译竟然木有,唉,专业用语。

另外,今儿又折腾了半天原来依稀记着碰到过,后来却怎么也折腾不好的问题。

问题是这样儿的,我继承了SurfaceView类,却死活不调draw

后来发现

在Activity里的OnCreate里 super.onCreate(savedInstanceState); //setContentView(R.layout.main);//就是这句没注掉,基础啊,基础,唉,回去仔细研究Android结构去!!! cGame game = new cGame(this); setContentView(game); 注释部分出了问题,唉,基础啊基础,好长时间不用又忘了!!!

再次记录,去掉这一行,换成View类,好啦,SurfaceView不成的主要问题,估计是runnable哪儿还没添加调用,书在斩哥哪儿,等拿回来了再试一下。

更多相关文章

  1. Android基础知识:Day02 常见布局、logcat相关和文件读写
  2. Android 自定义 View 理论基础
  3. Android核心基础(二)
  4. TextView的XML属性说明全析 ---Android基础篇
  5. 两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEve
  6. Android安全机制解析与应用实践 Android 基础
  7. Android系统自带Spinner+Adapter基础
  8. Android基础之启动过程分析
  9. 开发android,我们需要哪些技能基础。

随机推荐

  1. 本地git的配置和一些命令
  2. php之mvc架构思想
  3. 白话Thinkphp5.1
  4. javascript内容整理
  5. 坚持自己的学习方法不动摇
  6. 小白的PHP之路
  7. 【PHP动态分页】composer自动加载机制和
  8. 配置giehub
  9. HTML入门笔记1
  10. js完成购物车、es6模块导入问题