读书人

Android Matrix种实现J2ME的drawRegio

发布时间: 2012-09-07 10:38:15 作者: rapoo

Android Matrix类实现J2ME的drawRegion的镜像方法【新一则】

先说说drawRegion方法:

?

1. 对称于Y轴

????其变换矩阵:

????Android Matrix种实现J2ME的drawRegion的镜像方法【新一则】????

???

??? 其变换为:

? ??Android Matrix种实现J2ME的drawRegion的镜像方法【新一则】

?

2. 对称于X轴:

????Android Matrix种实现J2ME的drawRegion的镜像方法【新一则】??

?

3. 对称于原点O:

??? Android Matrix种实现J2ME的drawRegion的镜像方法【新一则】

?

4.?对称于直线y=x:?

??? Android Matrix种实现J2ME的drawRegion的镜像方法【新一则】

?

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

????Android Matrix种实现J2ME的drawRegion的镜像方法【新一则】

?

二、drawRegion方法的实现

?

public void drawRegion(Image image_src,    int x_src, int y_src,   int width, int height,    int transform,   int x_dest, int y_dest,   int anchor) {if ((anchor & VCENTER) != 0) {y_dest -= height / 2;} else if ((anchor & BOTTOM) != 0) {y_dest -= height;}if ((anchor & RIGHT) != 0) {x_dest -= width;} else if ((anchor & HCENTER) != 0) {x_dest -= width / 2;}//Bitmap newMap = Bitmap.createBitmap(image_src.getImage(), x_src, y_src,width, height);/* * 这里没有使用create 而是用canvas的clipRect方法来实现扣图的效果 * 使用了save为后面恢复剪裁区用 */g.save();g.clipRect(x_dest, y_dest, x_dest+width, y_dest+height);Matrix mMatrix = new Matrix();Matrix temp = new Matrix();float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1 };temp.setValues(mirrorY);switch (transform) {case SpriteX.TRANS_NONE:break;case SpriteX.TRANS_ROT90:mMatrix.setRotate(90, width / 2, height / 2);break;case SpriteX.TRANS_ROT180:mMatrix.setRotate(180, width / 2, height / 2);break;case SpriteX.TRANS_ROT270:mMatrix.setRotate(270, width / 2, height / 2);break;case SpriteX.TRANS_MIRROR:mMatrix.postConcat(temp);break;case SpriteX.TRANS_MIRROR_ROT90:mMatrix.postConcat(temp);mMatrix.setRotate(90, width / 2, height / 2);break;case SpriteX.TRANS_MIRROR_ROT180:mMatrix.postConcat(temp);mMatrix.setRotate(180, width / 2, height / 2);break;case SpriteX.TRANS_MIRROR_ROT270:mMatrix.postConcat(temp);mMatrix.setRotate(270, width / 2, height / 2);break;}/* * 这里的偏移要注意减去x_src和y_src * 并且调用restore()恢复剪裁区 */mMatrix.setTranslate(x_dest-x_src, y_dest-y_src);g.drawBitmap(image_src.getImage(), mMatrix, p);g.restore();}

?

1 楼 yuanzhifei89 2012-02-22 SpriteX.java这个文件能发我一个么?邮箱:563451339@qq.com 2 楼 zhouxiaoli521 2012-02-22 yuanzhifei89 写道SpriteX.java这个文件能发我一个么?邮箱:563451339@qq.com
那个很久没用找不到了
SpriteX.java,这个类只使用了j2me中的canvas里的基本绘图函数,所以只要你实现了j2me的canvas方法就可以用SpriteX.java”

读书人网 >Android

热点推荐