【问题标题】:Is there any way to draw on canvas, when that is zoomed?有没有办法在画布上绘制,当它被放大时?
【发布时间】:2014-06-04 18:18:20
【问题描述】:


调整画布大小时,此处不执行绘图。 它只是检查是否有多次触摸,然后返回。

这是我的工作:

@override
 public final boolean onTouchEvent(MotionEvent event) {
 if (event.getPointerCount() >= 2) {
            if (!zoomed) {
                zoomed = true;
                drawing.setStarted(false);
            }

            return false;
        }

        if (zoomed && event.getPointerCount() < 2) {
            Log.d("Zoomed", "Drawing");

        }

        if (zoomed) {

            if (event.getAction() == MotionEvent.ACTION_UP) {
                zoomed = false;
            }
            return false;

        }


            float x = event.getX();
            float y = event.getY();

            switch (event.getAction()) {
....
    // here I handle the corresponding event

invalidate();
return true;
}

问题如下:
我如何在画布上绘制,而那是缩放的?

先谢谢了!!!

【问题讨论】:

  • 我在处理完相应的动作后调用invalidate()

标签: android android-canvas zooming pinchzoom android-bitmap


【解决方案1】:

invalidate 重新安排重新设计事件。

   if (zoomed && event.getPointerCount() < 2) {
        Log.d("Zoomed", "Drawing");
    }

    if (zoomed) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            zoomed = false;
        }
        invalidate();
        return false;

    }

【讨论】:

  • 非常感谢!!!实际上,在这种情况下,只有当我在屏幕上按住 2 根手指时,画布才会调整大小。是否可以在缩放时将绘图添加到画布?提前多谢!!!
  • 绘图事件不知道您的缩放。如果您调用 invalidate,则将再次安排重绘。如果它不重绘可能只意味着两件事,1. 你没有调用 invalidate(),2. 没有什么新东西要重绘
【解决方案2】:

如果我没听错的话,当你在屏幕上有两根手指时,你会打电话

return false;

如果你想触发绘图,你应该调用

invalidate();

在返回语句之前,对吧?

【讨论】:

  • 谢谢!!!!我调整了画布的大小。该画布仍然调整大小。现在我想以调整大小的模式将绘图添加到画布。但是,根据我的代码,当我触摸屏幕时,画布会返回到之前的状态,因此我无法在调整大小的屏幕上绘图。非常感谢您的任何想法。
  • 您能否更新原始问题中的代码,以便我们看到当前版本?
猜你喜欢
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
相关资源
最近更新 更多