如何将图像绘制到Pixmap,但是可以旋转某个角度,就像在Batch上绘图时一样?没有具有角度作为参数的Pixmap方法,就像批量绘图方法一样。
答案 0 :(得分:3)
好的,这是我设法制作的代码(实际上是从这里借用和调整:Rotate Bitmap pixels):
public Pixmap rotatePixmap (Pixmap src, float angle){
final int width = src.getWidth();
final int height = src.getHeight();
Pixmap rotated = new Pixmap(width, height, src.getFormat());
final double radians = Math.toRadians(angle), cos = Math.cos(radians), sin = Math.sin(radians);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
final int
centerx = width/2, centery = height / 2,
m = x - centerx,
n = y - centery,
j = ((int) (m * cos + n * sin)) + centerx,
k = ((int) (n * cos - m * sin)) + centery;
if (j >= 0 && j < width && k >= 0 && k < height){
rotated.drawPixel(x, y, src.getPixel(j, k));
}
}
}
return rotated;
}
它创建并返回通过源Pixmap的旋转Pixmap。它围绕中心旋转,它实际上非常快,在PC和我的HTC Sensation上。
并且不要忘记在使用后处理Pixmap。
为此提供更优化的系统解决方案会更好,有旋转点坐标,但这对我有用,希望对其他人有用。
答案 1 :(得分:1)
您的代码的k和j颠倒了。照原样,应该为0度的角度绘制相同的东西,但事实并非如此。它将旋转90度。所以一行应该是
rotated.drawPixel(x, y, src.getPixel(j, k));
代替
rotated.drawPixel(x, y, src.getPixel(k, j));
否则,就像冠军一样。