【发布时间】:2012-11-09 05:26:40
【问题描述】:
我有一个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轴时,边缘将不平行(顶部位图的底部边缘穿过底部位图的顶部边缘) :
我做错了什么吗?
【问题讨论】:
标签: android matrix rotation android-canvas