0

私を助けてください

ピンチズームおよびドラッグ可能なビットマップを画像ビューに表示するAndroidアプリケーションを開発しています(画像ビューの境界はデバイスの画面サイズと同じです)。ビットマップをズームして画像ビューに表示するだけです

私が欲しいのは

デバイス画面上の場所をクリックすると、XとYの位置が取得され、ビットマップをクリックした場所に正確にドットが描画されます。これは、ビットマップ上で場所をマークするようなものです。

これが説明的な画像です(評判が悪いため、ここにアップロードできませんでした)

http://www4.picturepush.com/photo/a/9321682/img/9321682.jpg

画像が表示されたら、画像ビューのx2、y2の位置を取得し、ビットマップのx1、y1の位置に赤い点を描画します

あなたが私にいくつかのコードやアドバイスを与えることができれば、それは私にとって非常に助けになります

ありがとうございました

4

2 に答える 2

1

私は同じ問題を経験し、解決しました。

これを試して、

  1. *タッチポイントx、yを取得*

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

2.逆行列を計算する

            // calculate inverse matrix
            Matrix inverse = new Matrix();

3. ImageView マトリックスを取得します getImageMatrix().invert(inverse);

4.座標を実際の画像にマッピングする

        // map touch point from ImageView to image
        float[] touchPoint = new float[] { event.getX(), event.getY() };
        inverse.mapPoints(touchPoint);

* 4. 画像の実際の x、y を取得します *

        x = (int) touchPoint[0];
        y = (int) touchPoint[1];
于 2014-02-26T06:53:09.837 に答える
0

タッチの座標を取得するonTouchには、imageView のイベントを使用します。

imageView.setOnTouchListener(this);

@Override
    public boolean onTouch(View view, MotionEvent me) {
        int x = me.getX();
        int y = me.getY();
        yourbitmap.setPixel(x + dx, y + dy, COLOR.RED);

        return true;

}

ここdx, dyで、imageView 内のビットマップの変位です。

編集

との値はdxdy自分で設定したイメージ ビューの設定によって異なります。ビットマップが常に中央に配置され、画面いっぱいに表示されない場合、dy= (imageview_height - bitmap_height) / 2およびdx= (imageview_width - bitmap_width) / 2. 画像が画像ビューに収まるようにスケーリングされている場合は、倍率を決定する必要があります。これらの計算については、こちらで読むことができます。

于 2012-09-08T14:42:19.090 に答える