为什么位图不能在中间旋转?
当我用罪点旋转点时,因为它是o.k.和使用AffineTransform的Swing中的旋转有效但不能用矩阵旋转。
我使用此代码:
matrix.reset();
matrix.setRotate(35.0f,middleofx,middleofy);
Bitmap t=Bitmap.createBitmap(BI_auto);
Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0,
BI_car.getWidth(), BI_car.getHeight(), matrix, true);`
点的旋转起作用:
sx = ((carx) + 45 - worldx);
sy = ((cary) + 45 - worldy);
float rad = (float) (grad / 180.0 * Math.PI);
float ex2 = (float) (sx + length* Math.sin(angle - rad));
float ey2 = (float) (sy + length* Math.cos(angle - rad));
红色矩形中的绿色和红色点是正确的,但是绿色的车辆矩形是错误的而不是在中间 显示错误旋转的位图!
答案 0 :(得分:0)
我不确定java语法,但你应该像下面这样做。
matrix.translate(-middleofx,-middleofy); // these might be positive.
matrix.setRotate(35.0f);
Bitmap t=Bitmap.createBitmap(BI_auto);
Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0, BI_car.getWidth(), BI_car.getHeight(), matrix, true);
matrix.translate(0,0);
答案 1 :(得分:0)
旋转的位图比原始位图大,不会剪切图像。您可以尝试绘制结果,以便中心的坐标匹配。