10

キャンバス上の画像にピンチ ズーム イン/アウト機能とドラッグ アンド ドロップ機能を実装することに成功しました。

今私が欲しいのはサイズ変更です。iPhoneアプリに基づいた以下のリンクのような画像ここに画像の説明を入力

iPhone SDK を使用して画像の形状を変更するには?

では、どうすればそのような機能を Android で実現できますか?

4

4 に答える 4

1

基本的には画像を無効にして最初からキャンバスに描き直す必要があります::

img=(ImageView)findViewById(R.id.yourimageidfromxml);

img.onTouchEvent(MotionEvent me)
{
   int X=me.getX(); 
   int Y=me.getY();
   img.invalidate();
   img.repaint(X,Y);

}

void paint(int X,int Y)
{
  img.setWidth(X);
  img.setHeight(Y);
}

スケーリング画像は、最初からキャンバスに再描画を使用して変換されます

于 2012-12-29T14:45:41.700 に答える
1

サイズ変更によって、ビットマップを垂直および水平面に「引き伸ばす」ことを参照している場合は、形状 (楕円など) が描画されている四角形を変更するだけです。

例えば:

これは、楕円の元の形状です。

canvas.drawOval(new Rect(0,0,100,100), bluePaint);

これは同じ楕円形で、水平面上で引き伸ばされた (サイズ変更された) だけです。

canvas.drawOval(new Rect(0,0,200,100), bluePaint);

これが役立つことを願っています。

于 2013-01-16T07:58:56.260 に答える
0

2 つのオプションがあり、どちらもカス​​タム ビューに関係しています。1 つ目は、「キャンバス」を満たすカスタム ビューを作成することです。ビュー内の 8 つの青の円と 1 つの緑の円をオブジェクトとして追跡できRectます。オーバーライドonTouchEvent(MotionEvent)してから、モーションイベントがコントロールにあるかどうかを確認し、それに応じて更新します(ここでは少し単純化しています:))。onTouchEvent から を呼び出しますinvalidate()。次に、コントロールの描画を処理し、 onDrawonDraw(Canvas)への最後の呼び出し以降にコントロールがどのように変更されたかに従って画像を更新できます。

もう 1 つのオプションは、同様のことを行うことですが、円とコントロールのみをカプセル化するビューを使用します。つまり、ビューを移動するには、ビューのレイアウト パラメーターを変更できるコンテナーが必要になります。これを行うと、ビューのサイズと位置を再計算する必要があるため、onTouchEvent メソッドはそのレイアウト ビューで無効化をトリガーする必要があります。これは間違いなく難しいでしょうが、達成しようとしているものによっては、個々のビューで作業する方が、単一のビューでコード内の円の表現を維持するよりも優れている場合があります。

于 2012-09-06T02:26:10.803 に答える
0

画像のサイズ変更は、scaleType "fitXY" を指定した単純な ImageView を使用して行うことができます。

青いサイズ変更ハンドルを自分で追加する必要があります。

画像 (緑色のハンドル) の回転を変更するには、次を使用します。

public static Bitmap rotate(Bitmap src, float degree) {
    // create new matrix
    Matrix matrix = new Matrix();
    // setup rotation degree
    matrix.postRotate(degree);

    // return new bitmap rotated using matrix
    return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
}

ソース: http://xjaphx.wordpress.com/2011/06/22/image-processing-rotate-image-on-the-fly/

その他の Android 画像処理の例については、http: //xjaphx.wordpress.com/learning/tutorials/を参照してください。

于 2013-01-16T07:20:26.493 に答える