0
OverlayObject overlayObject = overlayObjects.get(index);
Bitmap dotIndicator = overlayObject.DTO.dotIndicatorBitmap;

int width = dotIndicator.getWidth();
int height = dotIndicator.getHeight();

Log.d("dotIndicator.getWidth()", "" + width);
Log.d("dotIndicator.getHeight()", "" + height);

Matrix matrix = new Matrix();
matrix.postRotate(gbConstants.dotIndicatorRotationFactor, width/2, height/2);

Bitmap newBitmap = Bitmap.createBitmap(dotIndicator, 0, 0,
    width, width, matrix, true);

Log.d("newBitmap.getWidth()", "" + newBitmap.getWidth());
Log.d("newBitmap.getHeight()", "" + newBitmap.getHeight());

ログの結果: 01-15 14:46:16.485: D/dotIndicator.getWidth()(20739): 102 01-15 14:46:16.485: D/dotIndicator.getHeight()(20739): 102 01- 15 14:46:16.485: D/newBitmap.getWidth()(20739): 104 01-15 14:46:16.485: D/newBitmap.getHeight()(20739): 104

01-15 14:46:16.555: D/dotIndicator.getWidth()(20739): 104
01-15 14:46:16.555: D/dotIndicator.getHeight()(20739): 104
01-15 14:46:16.555: D/newBitmap.getWidth()(20739): 106
01-15 14:46:16.555: D/newBitmap.getHeight()(20739): 106

**注: gbConstants.dotIndicatorRotationFactor = 1 (デバッグ用にこの数値を最小値に設定しました)

newBitmap が作成されるたびに、画像が 1 度回転するごとに幅と高さに 2 ピクセルが追加されます。他のリンクや質問を閲覧しましたが、これまでのところ私の質問に答えたものはありません。また、結果に影響を与える可能性のある変数やオブジェクトを参照するメソッドが他にないことを確認するために、何度も何度もデバッグを試みました。前もって感謝します!

4

2 に答える 2

0

答えはとても簡単です。1° 回転した画像は、幅と高さにより多くのスペースが必要になるため、結果は完全に正しいものになります。そうしないと、写真の角が切れてしまうからです。

一枚の紙を取り、回転させるだけで、幅と高さが 45° に達するまでどのように増加するかがわかります。

編集: たぶんこれが役に立ちます:回転すると画像のサイズが変わります。どうすればこれを止めることができますか?

于 2013-01-15T07:15:20.823 に答える
0

これは、ある角度で画像を回転させると、結果の画像が傾斜した画像を持つ正方形になるためです。下の画像に示すように。

ここに画像の説明を入力

于 2013-01-15T07:17:17.303 に答える