如何在pixmap(LibGDX)上绘制旋转图像

如何在pixmap(LibGDX)上绘制旋转图像,libgdx,image-rotation,pixmap,Libgdx,Image Rotation,Pixmap,如何将图像绘制到Pixmap,但旋转一定角度,就像在批处理上绘制一样?没有一种Pixmap方法像批处理绘图方法那样以角度作为参数。好的,这是我设法制作的代码(实际上是从这里借用和调整:): public Pixmap rotatePixmap(Pixmap src,浮动角度){ final int width=src.getWidth(); final int height=src.getHeight(); Pixmap rotated=新的Pixmap(宽度、高度,src.getFormat(

如何将图像绘制到Pixmap,但旋转一定角度,就像在批处理上绘制一样?没有一种Pixmap方法像批处理绘图方法那样以角度作为参数。

好的,这是我设法制作的代码(实际上是从这里借用和调整:):

public Pixmap rotatePixmap(Pixmap src,浮动角度){
final int width=src.getWidth();
final int height=src.getHeight();
Pixmap rotated=新的Pixmap(宽度、高度,src.getFormat());
最后的双弧度=数学。托拉度(角度),cos=数学。cos(弧度),sin=数学。sin(弧度);
对于(int x=0;x=0&&j=0&&k
它从传递的源Pixmap中创建并返回旋转的Pixmap。它绕着中心旋转,在PC和我的HTC上,它实际上非常快

不要忘记处理使用后得到的Pixmap


这将是一个很好的系统解决方案,它将更加优化,有旋转点坐标,但这对我来说做的工作,希望对其他人有帮助。

好的,这是我设法制作的代码(实际上是从这里借用和调整:):

public Pixmap rotatePixmap(Pixmap src,浮动角度){
final int width=src.getWidth();
final int height=src.getHeight();
Pixmap rotated=新的Pixmap(宽度、高度,src.getFormat());
最后的双弧度=数学。托拉度(角度),cos=数学。cos(弧度),sin=数学。sin(弧度);
对于(int x=0;x=0&&j=0&&k
它从传递的源Pixmap中创建并返回旋转的Pixmap。它绕着中心旋转,在PC和我的HTC上,它实际上非常快

不要忘记处理使用后得到的Pixmap


这将是很好的系统解决方案,这将是更优化的,有旋转点坐标,但这对我来说做的工作,希望将有助于其他人。

你的代码有k和j颠倒。按原样,0度的角度应该画出相同的东西,但事实并非如此。它将其旋转90度。所以这一行应该是

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

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

否则,它会像champ一样工作。

您的代码将k和j颠倒。按原样,0度的角度应该画出相同的东西,但事实并非如此。它将其旋转90度。所以这一行应该是

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

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

否则,它会像一个champ一样工作。

我现在不准备对它进行编码,但您可以使用double for loops在原始的pixmap中循环,获取像素并将其移动到新pixmap中的新位置。创建一个精灵和旋转似乎更容易,如果你可以,我在游戏中使用一个巨大的像素地图作为地图。有时我会改变它(他们会将其移动到纹理,以加快绘图速度),有时我会读取像素以检测与某些移动对象的碰撞,所以精灵/纹理对我不好。不幸的是,我猜不支持绘制旋转图像。。试试这样的。这并不完全是你想要的,但这将导致你的答案。这将是一个有点紧张的活动嗯…谢谢。我没有认真考虑这种解决办法,因为我害怕我能得到的表演。但是,我也不经常画这种画,所以我会尝试一下。你只需要做这件事来生成它,而不是每一帧都画出来。我现在不准备对它进行编码,但是你可以使用双for循环来循环你的原始像素图,得到像素,并将它们移动到新像素图中的一个新位置。创建一个精灵和旋转似乎更容易,如果你可以,我在游戏中使用一个巨大的像素地图作为地图。有时我会改变它(他们会将其移动到纹理,以加快绘图速度),有时我会读取像素以检测与某些移动对象的碰撞,所以精灵/纹理对我不好。不幸的是,我猜不支持绘制旋转图像。。试试这样的。这并不完全是你想要的,但这将导致你的答案。这将是一个有点紧张的活动嗯…谢谢。我没有认真考虑这种解决办法,因为我害怕我能得到的表演。不过,我也不经常画这种画,所以我会尝试一下。你只需要这样做就可以生成它,而不是在每一帧都画它。你应该写“rotated.drawPixel(width-x,…”,为了防止水平图像,你应该写“rotated.drawPixel(width-x,…”为了防止水平图像P.S.你确定它没有按对角线方向翻转吗?我不这么认为。我用它来创建RPG中武器的库存图标,对于通常是垂直上下的剑的图像,315度的角度是逆时针45度(指向西北).P.S.你确定它不是以对角线的方式翻转的吗?我不这么认为。我用它来创建RPG中武器的库存图标,对于通常是笔直上下的剑的图像,315度的角度是逆时针45度(指向西北)。