关于用Android的API重写drawRegion方法的代码
2013-12-26 12:05
225 查看
Android里面没有drawRegion只好重写,
不废话,上代码:
[java] view
plaincopy
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里
[java] view
plaincopy
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);//就是这句没注掉,基础啊,基础,唉,回去仔细研究Android结构去!!!
cGame game = new cGame(this);
setContentView(game);
注释部分出了问题,唉,基础啊基础,好长时间不用又忘了!!!
不废话,上代码:
[java] view
plaincopy
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里
[java] view
plaincopy
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);//就是这句没注掉,基础啊,基础,唉,回去仔细研究Android结构去!!!
cGame game = new cGame(this);
setContentView(game);
注释部分出了问题,唉,基础啊基础,好长时间不用又忘了!!!
相关文章推荐
- 关于用Android的API重写drawRegion方法的代码
- 关于Mono for android运行时的报错:“java”已退出,代码为1的解决方法
- 关于Android中ScrollView嵌入ListView重写OnMeasure后ListView在顶端的解决方法
- Android关于 手机返回键和代码finish()方法退出activity他们有什么区别;当activity使用共享动画时应该调用哪个方法,结束activity
- 关于Android 5.0 、6.0 、 7.0代码设置WIFI连接方式为静态IP或DHCP的方法及注意事项
- 将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)
- android 双击屏幕触发事件,放大图片,不用接入借口api,不用OnGestureListener,不造成代码累赘方法
- 关于在android程序执行过程中使用Intent启动另一个活动后,同个方法未执行的代码是否会继续执行。
- 关于Android平台显示隐藏软键盘输入法的方法总结
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法实现边缘检测代码(2)
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.4 滤镜以及配套代码的制作方法
- Android使用已有C/C++代码、第三方SO库的方法(JIN学习)
- 关于android增添第三方字体的方法
- ArcGIS API for android 重写TiledMapServiceLayer [一]
- APIDemo学习笔记——Android上几种简单的Animation使用方法
- equals方法的重写代码实例
- 关于android截图的一些方法
- android中使用startactivityforresult跳转Activity后需要重写onBackPressed()方法
- 关于Android使用proguard进行代码混淆
- 关于在eclipse下android开发的错误:“Unable to resolve target 'android-18'"的解决方法