如何在像素图绘制旋转的图像(LibGDX)(How to draw rotated image on

2019-10-19 14:05发布

怎样绘制的图像像素图,而是通过旋转一定角度,像批量绘制时我能做什么? 没有一个具有角度作为参数,例如批绘图方法有像素图方法。

Answer 1:

好吧,这里是我设法让(实际上是借用,从这里调整:代码旋转位图像素 ):

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;

}

创建并返回旋转像素图进行传递源点阵图的。 它绕中心,它实际上是相当快的,在PC和我的HTC感觉。

而且不要忘记处置像素图的使用后,你会得到。

这将是很好有这个这将是更优化的系统解决方案,具有旋转点坐标,但这种做这项工作对我来说,希望能对别人有帮助的。



Answer 2:

你的代码有逆转k个和j。 AS-是,0度的角度应该引起同样的事情,但事实并非如此。 它旋转90度。 因此,一个行应该是

rotated.drawPixel(x, y, src.getPixel(j, k));

代替

rotated.drawPixel(x, y, src.getPixel(k, j));

否则,就像一个冠军。



文章来源: How to draw rotated image on pixmap (LibGDX)