关于用Android的API重写drawRegion方法的代码

Android里面没有drawRegion只好重写,

不废话,上代码:

[java]  view plain copy
  1. public static void drawRegion(Canvas g,Bitmap bitmap, int x_src, int y_src, int width, int height, int transform,  
  2.                 int x_dest, int y_dest,int anchor){  
  3.           
  4.             Matrix matrix = new Matrix();  
  5.             Matrix mirror = new Matrix();  
  6.             Bitmap img = null;  
  7.               
  8.             Rect src = new Rect();  
  9.             src.left    = x_src;  
  10.             src.right   = x_src + width;  
  11.             src.top     = y_src;  
  12.             src.bottom  = y_src + height;  
  13.               
  14.             float mirrorArray[] = {  
  15.                 -100,  
  16.                  010,  
  17.                  001  
  18.             };  
  19.               
  20.             mirror.setValues(mirrorArray);  
  21.               
  22.               
  23.               
  24.             switch (transform) {   
  25.               case TRANS_NONE: {   
  26.                   break;   
  27.                }   
  28.                case TRANS_ROT90: {   
  29.                     matrix.preRotate(90);   
  30.                     img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true);   
  31.                     break;   
  32.                 }   
  33.                 case TRANS_ROT180: {   
  34.                     matrix.preRotate(180);   
  35.                 img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true);   
  36.                     break;   
  37.                 }   
  38.                 case TRANS_ROT270: {   
  39.                     matrix.preRotate(270);   
  40.                     img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true);   
  41.                     break;   
  42.                 }   
  43.                 case TRANS_MIRROR: {   
  44.                 // TODO   
  45.                     matrix.postConcat(mirror);  
  46.                     img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true);   
  47.                     break;   
  48.                 }   
  49.                 case TRANS_MIRROR_ROT90: {   
  50.                     // TODO   
  51.                     matrix.postConcat(mirror);  
  52.                     matrix.preRotate(90);   
  53.                     img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true);                
  54.                   
  55.                     break;   
  56.                 }   
  57.                 case TRANS_MIRROR_ROT180: {   
  58.                 // TODO   
  59.                     matrix.postConcat(mirror);  
  60.                     matrix.preRotate(180);   
  61.                     img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true);                    
  62.                     break;   
  63.                 }   
  64.                 case TRANS_MIRROR_ROT270: {   
  65.                 // TODO   
  66.                     matrix.postConcat(mirror);  
  67.                     matrix.preRotate(270);   
  68.                     img = Bitmap.createBitmap(bitmap, src.left, src.top, src.right, src.bottom, matrix, true);                
  69.                     break;   
  70.                 }   
  71.               
  72.             }  
  73.             g.drawBitmap(img, x_dest, y_dest, null);   
  74.     }  

 

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

drawBitmap里面有对矩阵的支持。

 

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

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

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

 

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

 

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

后来发现

在Activity里的OnCreate里

[java]  view plain copy
  1. super.onCreate(savedInstanceState);  
  2. //setContentView(R.layout.main);//就是这句没注掉,基础啊,基础,唉,回去仔细研究Android结构去!!!  
  3.   
  4. cGame game = new cGame(this);  
  5. setContentView(game);   
注释部分出了问题,唉,基础啊基础,好长时间不用又忘了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值