画布用鼠标拖动旋转

5uzkadbs  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(241)

我有一个问题,我无法解决我的画布旋转。
我想我的画布旋转,而我在我的鼠标->拖动,这是正确的工作。但是在旋转之前,我的画布总是朝着鼠标旋转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)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题