キャンバスにビットマップを2回描画して回転させる必要があります.これは私のコードですCanvas
:Bitmap
Bitmap bitmap = ... ;
Matrix matrix = new Matrix();
Camera camera = new Camera();
camera.save();
// First drawing:
camera.rotateX(x_rotate_angle);
camera.rotateY(y_rotate_angle);
camera.getMatrix(matrix);
matrix.postTranslate(0, 0);
matrix.postScale(3, 3);
canvas.drawBitmap(bitmap, matrix, null);
camera.restore();
// Second drawing:
camera.rotateX(x_rotate_angle);
camera.rotateY(y_rotate_angle);
camera.getMatrix(matrix);
matrix.postTranslate(10, 10 + bitmap.getHeight());
matrix.postScale(3, 3);
canvas.drawBitmap(bitmap, matrix, null);
回転前の結果:
ビットマップが軸 Xのみを回転する場合、すべて問題ありません。この場合、結果は次のようになります。
上の両方の画像で、すべてのエッジが であることがわかります。ただし、parallel
ビットマップが軸 Yを回転すると、エッジは平行になりません (上のビットマップの下端が下のビットマップの上端と交差します)。
私は何か間違ったことをしましたか?