0

正常に作成したサイズ変更可能なタッチ ビューを作成しようとしています。コードHow to make view resizing on touch event を見つけることができます。

4つの角があります。角の 1 つをドラッグして、その四角形のサイズを変更できます。しかし今、私はそのロジックを強化し、そのコードにローテーションを入れたいと思っています。ユーザーが長方形の端の1つの中心に触れると、角度を見つけることができました。しかし、今の問題は、角の新しい位置を取得できないため、その長方形を再描画して回転できることです。

質問:角度に基づいて 4 つのコーナーの新しい位置を計算するにはどうすればよいですか? .

4

2 に答える 2

0

私が理解したように、あなたは回転角度に基づいて新しい座標を計算したいと思っています...おそらくあなたが思っているよりも簡単です:

x' = x × (cosα - sinα)
y' = y × sinα × cosα

したがって、これをプログラムで適用するだけx'です。xy'yα

cosαおよびsinα関数は Java でMath.cos(α)およびとして使用できますMath.sin(α)が、注意: Java では、すべての三角関数は角度として度数ではなくラジアンを使用するため、次のように考えることができます rad = deg * 180 / π

double deg = 45d; //Put instead your degrees
double rad = deg / 180 * Math.PI; //The radians convertion
于 2017-07-22T14:26:32.667 に答える
0

回転する角度がわかっている場合は、長方形の頂点を計算する必要はありません。それを行う簡単な方法は以下のようになります

@Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            canvas.save();
            canvas.rotate(60.0f);

            paint.setColor(Color.BLACK);
            paint.setStyle(Paint.Style.STROKE);

            canvas.drawRect(10, 10, 100, 100, paint);
            canvas.restore();
        }
于 2013-05-06T11:16:50.727 に答える