【问题标题】:Android transfer bitmap originAndroid传输位图来源
【发布时间】:2013-09-29 01:30:45
【问题描述】:

我使用 canvas.drawBitmap(bitmap, 100, 50, null) 绘制了一个宽度为 200、长度为 100 的矩形位图。因此,位图的原点是画布上的 (100,50)。当我用 MotionEvent.ACTION_DOWN 触摸设备屏幕上位图中心 (200, 100) 的位图并将位图原点设置为位图中心时,位图原点从 (100, 50) 移动到 (200, 100)。有没有办法可以在 ACTION_DOWN 事件之前将位图原点从上/左角转移到位图的中心?或者,有一种方法可以用位图的中心绘制位图?提前感谢您的任何建议。

【问题讨论】:

  • "When I touch the bitmap on my device screen..." 好吧,当您默认触摸屏幕时,什么都发生 -- 您在onTouchEvent() 方法中做了什么?如果您知道位图的宽度和高度,只需将绘制位图的 x 和 y 坐标分别移动宽度和高度的一半。
  • 感谢您的回复。你说的对!我已经编辑了我的问题以使其更清楚。当我触摸我的设备屏幕时,我确实将 ACTION_DOWN 事件的位图原点设置为位图的中心。我想知道是否有一种方法可以在 ACTION_DOWN 事件之前将位图原点设置为位图的中心,或者我可以创建具有中心原点但不是左上角的位图。
  • 没有可以设置的“原点”。 drawBitmap() 使用 x 和 y 来绘制位图,从左上角开始。您可以将 x 和 y 变量移动宽度和高度的一半,也可以将画布平移相同的量。
  • 由于我无法更改位图绘制点(上/左角),我计算了触摸点和位图上/左角的距离,并将它们的相对坐标用于 ACTION_DOWN 和 ACTION_MOVE 事件。现在,当我通过重置位图绘制点触摸设备屏幕时,位图不会从位图绘制点跳转到触摸点。问题解决了!!

标签: android canvas bitmap touch-event


【解决方案1】:

你有一个绘图的视图。所以你覆盖onTouchEvent(MotionEvent)onDraw (Canvas canvas)。在onTouchEvent(MotionEvent),你应该调用invalidate ()来触发onDraw (Canvas canvas)。因此,从(100, 50) 到(200, 100),只需通过canvas.drawBitmap(bitmap, x, y, null) 方法重新绘制位图即可。

float mOriginalX = 100, mOriginalY = 50;

public boolean onTouchEvent (MotionEvent event) {
  mOriginalX  = 200;
  mOriginalY  = 100;
  invalidate();
}

protected void onDraw (Canvas canvas) {
  canvas.drawBitmap(bitmap, mOriginalX, mOriginalY, null);
}

【讨论】:

  • 感谢您的回答。对不起,我的问题不够清楚。我确实在 ACTION_DOWN 事件上将 bipmap 重新设置为 (200, 100) 并使用 invalidate() 重新绘制位图。这就是为什么当我触摸设备屏幕上位图的中心时位图原点从 (100, 50) 跳到 (200, 100) 的原因。我想知道是否有一种方法可以在 ACTION_DOWN 事件之前将位图原点设置为位图的中心,或者我可以创建具有中心原点但不是左上角的位图。
  • 您想创建源位图的子集吗?你可以使用 createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
【解决方案2】:

当我使用触摸点重置位图绘制点时,为了防止位图绘制点(在上/左角)从位图绘制点移动(JUMP)到触摸点,我计算了触摸点的距离和位图上/左角,并使用它们的相对坐标来重置 ACTION_DOWN 和 ACTION_MOVE 事件的位图绘制点。现在,当我触摸设备屏幕时,位图绘制点不会跳转,并且可以用手指平滑移动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2023-03-22
    • 2014-09-13
    相关资源
    最近更新 更多