旋转画布后坐标计算中的问题

时间:2011-07-05 14:09:36

标签: android canvas rotation translation

我正在制作一个示例游戏演示,其中我只是在画布上放置一个图像,并在Android设备传感器上更改画布平移并移动到适当的位置。我想在y轴上(上下)翻译画布,并在x轴上旋转它。但是当我第一次旋转画布时,我的y轴坐标发生变化,并且在x轴上完成了变换。

我知道画布旋转角度和新x,y坐标计算的问题,但我不知道该怎么做。

这是示例代码:

在我的活动课

@Override
public void onSensorChanged(int sensor, float[] values) {
    // TODO Auto-generated method stub

              rotateX = values[0]; 
    translateY = values[1];
    Game.setDirection(rotateX,translateY);
}

现在在onDraw()方法的游戏视图类中

canvas.rotate(rotateX, imageCenterX, imageCenterY);
canvas.translate(0,translateY);

提前完成。

2 个答案:

答案 0 :(得分:1)

您的问题可能是您对画布所做的更改未重置。在对canvas进行任何更改(如旋转)之前,请调用canvas.save()。然后,当您完成绘制这些更改后,请调用canvas.restore()。像这样:

canvas.save();
canvas.rotate(foo, bar, sar);
blah.draw(canvas);
canvas.restore();

答案 1 :(得分:0)

我解决了我的问题。

我只是swap the method of canvas

喜欢

canvas.translate(0,translateY); 
canvas.rotate(rotateX, imageCenterX, imageCenterY); 

然后它工作正常。