0

キャンバスに描画するときにビットマップを回転させようとしています。問題は、canvas.rotate(90) を呼び出すと、その後に描画されるものは実際には描画されないことです。次のコードを実行すると、回転呼び出しがあるときに画面に何も描画されません。回転呼び出しを取り出すと、問題なく表示されます。回転呼び出しによってビットマップがキャンバスに表示されなくなるのはなぜですか?

        canvas.save();
        canvas.rotate(90);
        canvas.drawBitmap(leaves, null, leafRect, bitmapPaint);
        canvas.restore();
4

1 に答える 1

2

デフォルトでは、rotate() はキャンバスを正確な中心から回転させます。おそらく、ビットマップの中心から回転したいと思うでしょう。

    canvas.save();
    canvas.rotate(90, leafRect.x + (leafRect.width / 2), leafRect.y + (leafRect.height / 2));
    canvas.drawBitmap(leaves, null, leafRect, bitmapPaint);
    canvas.restore();

ドキュメントの詳細については、rotate(angle, x, y)

于 2012-07-19T03:12:51.527 に答える