BlackBerry drawTexturedPath将移动锚点旋转到图像中心

时间:2010-06-26 06:34:08

标签: java image blackberry java-me mobile

我知道如何使用drawTexturePath将BlackBerry Bitmap图像旋转任意角度。但是,旋转锚位于图像的左上角。如何将锚点移动到图像的中心?

此代码使用Graphics.drawTexturedPath围绕左上角旋转:

int[] x = new int[] {0, width, width, 0};
int[] y = new int[] {0, 0, height, height};
int angle32 = Fixed32.toFP(angleDegrees);
int dux = Fixed32.cosd(angle32);
int dvx = -Fixed32.sind(angle32);
int duy = Fixed32.sind(angle32);         
int dvy = Fixed32.cosd(angle32);       
graphics.drawTexturedPath(x, y, null, null, 0, 0, dvx, dux, dvy, duy, bitmapImage);

如何使用drawTexturedPath(http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/ui/Graphics.html#drawTexturedPath)修改此代码以围绕图像中心旋转?

仅供参考,一篇类似的文章描述了使用drawTexturedPath进行的其他2D afine转换,包括偏斜和一些3D效果:“BlackBerry - image 3D transform”(BlackBerry - image 3D transform)。

- 提前谢谢,大卫Pixelmonks.com

1 个答案:

答案 0 :(得分:1)

要围绕中心旋转,您需要在旋转之前移动位图: 而不是

int[] x = new int[] {0, width, width, 0};
int[] y = new int[] {0, 0, height, height};

你应该使用

int[] x = new int[] {-width / 2, width / 2, width / 2, -width / 2};
int[] y = new int[] {-height / 2, -height / 2, height / 2, height / 2};

然后应用变换,再次将width / 2添加到所有x值,将height / 2添加到y值。