画布用鼠标拖动旋转

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

我有一个问题,我无法解决我的画布旋转。
我想我的画布旋转,而我在我的鼠标->拖动,这是正确的工作。但是在旋转之前,我的画布总是朝着鼠标旋转90度,然后继续旋转。我想让我的画布保持当前的旋转。
我知道我从用atan2处理的鼠标得到输入,我直接将结果分配到canvas.rotate(Angular ,pivotx,pivoty)中,这就是为什么它总是旋转。然而,我只是不知道如何计算偏移量或任何需要的东西,使我的画布旋转正确。
我附上了下面的代码和代码结果的gif。
非常感谢您的建议!:)

  1. public boolean onTouchEvent(MotionEvent event) {
  2. switch (event.getAction()) {
  3. case MotionEvent.ACTION_DOWN:
  4. break;
  5. case MotionEvent.ACTION_MOVE:
  6. angle = (float) (Math.atan2(event.getY() - mCanvas.getHeight() / 2, event.getX() - mCanvas.getWidth() / 2));
  7. angle = (float) ((angle * (180/Math.PI)));
  8. invalidate();
  9. break;
  10. case MotionEvent.ACTION_UP:
  11. invalidate();
  12. break;
  13. }
  14. return true;
  15. }
  16. @Override
  17. protected void onDraw(Canvas canvas) {
  18. canvas.rotate(angle, canvas.getWidth() * 0.5f, canvas.getHeight() * 0.5f);
  19. drawDial(canvas, mPaint); //Draw dial method only draws the central watch-like dial
  20. }

当前代码的结果(gif)

暂无答案!

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

相关问题