Android(安卓)drawRegion 绘制
16lz
2021-01-24
public void drawRegion1(Image img, int x_src, int y_src, int width,
int height, int transform, int x_dest, int y_dest, int anchor) {
canvas.save();
int ix = 0, iy = 0;
switch (transform) {
case TRANS_NONE: // 0
break;
case TRANS_ROT90: // 90
canvas.rotate(90, x_dest, y_dest);
iy = height;
break;
case TRANS_ROT180: // 180
canvas.rotate(180, x_dest, y_dest);
iy = height;
ix = width;
break;
case TRANS_ROT270: // 270
canvas.rotate(270, x_dest, y_dest);
ix = width;
break;
case TRANS_MIRROR: // M
canvas.scale(-1, 1, x_dest, y_dest);// 镜像
ix = width;
break;
case 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 TRANS_MIRROR_ROT180: // M180
canvas.scale(-1, 1, x_dest, y_dest);// 镜像
canvas.rotate(180, x_dest, y_dest);
iy = height;
break;
case 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.getBitmap(), x_dest - ix - x_src, y_dest - iy - y_src,
paint);
canvas.restore();
}
protected Rect srcRec = new Rect();
protected RectF dstRec = new RectF();
public void drawRegion2(Image src, int x_src, int y_src, int width,
int height, int transform, int x_dest, int y_dest, int anchor) {
// TODO deal with parameter transform
srcRec.left = x_src;
srcRec.top = y_src;
srcRec.right = srcRec.left + width;
srcRec.bottom = srcRec.top + height;
dstRec.left = x_dest;
dstRec.top = y_dest;
dstRec.right = dstRec.left + width;
dstRec.bottom = dstRec.top + height;
this.canvas.drawBitmap(src.getBitmap(), srcRec, dstRec, paint);
}
int height, int transform, int x_dest, int y_dest, int anchor) {
canvas.save();
int ix = 0, iy = 0;
switch (transform) {
case TRANS_NONE: // 0
break;
case TRANS_ROT90: // 90
canvas.rotate(90, x_dest, y_dest);
iy = height;
break;
case TRANS_ROT180: // 180
canvas.rotate(180, x_dest, y_dest);
iy = height;
ix = width;
break;
case TRANS_ROT270: // 270
canvas.rotate(270, x_dest, y_dest);
ix = width;
break;
case TRANS_MIRROR: // M
canvas.scale(-1, 1, x_dest, y_dest);// 镜像
ix = width;
break;
case 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 TRANS_MIRROR_ROT180: // M180
canvas.scale(-1, 1, x_dest, y_dest);// 镜像
canvas.rotate(180, x_dest, y_dest);
iy = height;
break;
case 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.getBitmap(), x_dest - ix - x_src, y_dest - iy - y_src,
paint);
canvas.restore();
}
protected Rect srcRec = new Rect();
protected RectF dstRec = new RectF();
public void drawRegion2(Image src, int x_src, int y_src, int width,
int height, int transform, int x_dest, int y_dest, int anchor) {
// TODO deal with parameter transform
srcRec.left = x_src;
srcRec.top = y_src;
srcRec.right = srcRec.left + width;
srcRec.bottom = srcRec.top + height;
dstRec.left = x_dest;
dstRec.top = y_dest;
dstRec.right = dstRec.left + width;
dstRec.bottom = dstRec.top + height;
this.canvas.drawBitmap(src.getBitmap(), srcRec, dstRec, paint);
}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer