0

canvas.drawBitmap(bitmap, 100, 50, null) を使用して、幅 200、長さ 100 の長方形のビットマップを描画します。したがって、ビットマップの原点はキャンバス上の (100,50) です。MotionEvent.ACTION_DOWN を使用してデバイス画面のビットマップの中心 (200, 100) にタッチし、ビットマップの原点をビットマップの中心に設定すると、ビットマップの原点が (100, 50) から (200, 100)。ACTION_DOWN イベントの前に、ビットマップの原点を上/左隅からビットマップの中央に転送する方法はありますか? または、ビットマップの中心でビットマップを描画する方法はありますか? 事前にご提案いただきありがとうございます。

4

2 に答える 2

1

描画するためのビューがあります。したがって、 and をオーバーライドonTouchEvent(MotionEvent)しますonDraw (Canvas canvas)。では、 triggeronTouchEvent(MotionEvent)を呼び出す必要があります。したがって、(100, 50) から (200, 100) までは、 の方法でビットマップを描き直すだけです。invalidate ()onDraw (Canvas canvas)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);
}
于 2013-09-29T02:14:15.743 に答える
0

タッチ ポイントを使用してビットマップの描画ポイントをリセットするときに、ビットマップの描画ポイント (左上隅) がビットマップの描画ポイントからタッチ ポイントに移動 (JUMP) するのを防ぐために、タッチ ポイントとビットマップの距離を計算します。 ACTION_DOWN および ACTION_MOVE イベントのビットマップ描画ポイントをリセットするには、それらの相対的な調整を使用します。これで、デバイスの画面をタッチしてもビットマップの描画ポイントがジャンプせず、指でスムーズに移動できるようになりました。

于 2013-10-01T03:55:53.883 に答える