我有一个问题,我无法解决我的画布旋转。
我想我的画布旋转,而我在我的鼠标->拖动,这是正确的工作。但是在旋转之前,我的画布总是朝着鼠标旋转90度,然后继续旋转。我想让我的画布保持当前的旋转。
我知道我从用atan2处理的鼠标得到输入,我直接将结果分配到canvas.rotate(Angular ,pivotx,pivoty)中,这就是为什么它总是旋转。然而,我只是不知道如何计算偏移量或任何需要的东西,使我的画布旋转正确。
我附上了下面的代码和代码结果的gif。
非常感谢您的建议!:)
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
angle = (float) (Math.atan2(event.getY() - mCanvas.getHeight() / 2, event.getX() - mCanvas.getWidth() / 2));
angle = (float) ((angle * (180/Math.PI)));
invalidate();
break;
case MotionEvent.ACTION_UP:
invalidate();
break;
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.rotate(angle, canvas.getWidth() * 0.5f, canvas.getHeight() * 0.5f);
drawDial(canvas, mPaint); //Draw dial method only draws the central watch-like dial
}
当前代码的结果(gif)
暂无答案!
目前还没有任何答案,快来回答吧!