Android画布用canvas.scale翻转

时间:2012-08-25 20:39:16

标签: android canvas surfaceview ontouchevent

我有一个小问题。 :) 在我的新动态壁纸中,我正在水平翻转画布 用:

c.scale(-1f, 1f, screenWidth* 0.5f, screenHeight* 0.5f);
drawFlipped();
c.scale(-1f, 1f, screenWidth* 0.5f, screenHeight* 0.5f);

这一切都很好,但我也碰巧有一个ontouch事件 用户可以单击定义为Rect的不同移动对象。

但是当在翻转的画布上绘制矩形时,x,y坐标 不正确。它仍然在镜子里,我理解,因为我翻转 绘制精灵后画布回来了。

我的问题是:如何从右侧计算触摸事件 屏幕? 我试过:Screenwidth - object.x - object.width但它没有多大帮助:(

1 个答案:

答案 0 :(得分:0)

这对我有用:

int screenWidth = getScreenWidth();
Rect newCoordinates = new Rect(object.getRect()); //copies old coordinates
newCoordinates.right = screenWidth - object.getRect().left; //switch right and left since the Rect is being mirrored
newCoordinates.left = screenWidth - object.getRect().right;
object.setRect(newCoordinates);