0

私はこれを持っています:
ソースケース

そして、私が正確に望むのは、OnTouchListener(中心に点のあるオレンジ色の四角)を持つオブジェクトの座標(X、Y)を介してビットマップの一部を表示することです

したがって、問題は、画像に表示されるように画像の一部を描画したいということです(赤い四角の「表示したい領域」)。
したがって、この場合、例外の結果は(ビットマップの一部): 現時点では、次のようにしています:
除外された結果

public boolean onTouch(View view, MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE:

            Bitmap mBitmap = Bitmap.createBitmap(sourceBitmap,view.getX() - view.getWidth(),view.getY()-view.getHeight(),250,250);
            //other stuff to fill this portion of bitmap
            break;
    }

    return true;
}
}

そして、それは正しくありません。

どうすればこれを達成できますか? 多くの式を試しましたが、うまくいきませんでした。助言がありますか?

PS私が理解しているように、 event.getX() / event.getY()は相対的な座標を取得しています(そして、私には明確ではありませんが、タッチリスナー(中央に点のあるオレンジ色の四角)を使用してイメージビューのオブジェクトから取得する正確な座標は何ですか?このオブジェクトの中心またはTop.Left corners(X,Y))を取得しますか?

4

4 に答える 4

0

したがって、この問題を解決するのは簡単でした。
解決策: OnTouchListener
を持つオブジェクト (オレンジ色の四角) があります (たとえば、サイズが 50dp Height / 50dp Widthのクワッドです)。
したがって、 view.getX()/ view.getY() はオブジェクト (OnTouchListener を持つ) の相対座標 (中心) を取ります。
だから私が必要なもの:

//imageview parameters ,where i will show this part of bitmap
int Width = img.getWidth();
int Height = img.getHeight();
//after this,i make margin of my coords,via this simple formula -> Current Coord X - Width / 2 (same for Y)
 Bitmap mBitmap = Bitmap.createBitmap(sourceBitmap,view.getX() - Width / 2,view.getY()-Height / 2,Width,Height);  

それだけです。
楽しみ!

于 2015-12-14T09:49:58.600 に答える