在libGDX中显示图像的一部分 - 看起来很拉伸

时间:2016-05-28 10:42:50

标签: java opengl opengl-es libgdx

我试图在libGDX中建立一个进度条,因为我有一个完整的水平图像,在两行中我试图显示该图像的2个不同宽度:

imageFull: enter image description here

imageFull.draw(batch,10,80,600,50);
imageFull.draw(batch,10,20,100,50);

结果是: enter image description here

当宽度很小时,看起来很小。它拉长了,看起来很糟糕。

为什么我不能在不破坏图像左侧的情况下只显示部分图像?

任何想法如何解决?

1 个答案:

答案 0 :(得分:0)

这是正常行为。如果您在不保持图像宽高比的情况下拉伸图像,它将会变形,它本身并不知道可拉伸部分。

9-patch会帮助你,但你不能像现在这样简单地绘制精灵(虽然可能只有SpriteDrawable?)。

如果我在哪里,我会使用名为Actor的{​​{3}} ProgressBar。喂一个9补丁图像,然后它应该正确拉伸。或者,如果您想自己控制它,只需使用Image,然后将此图片提供给九个补丁。

创建九个补丁的快捷方法是通过硬编码来指定它自己的拉伸区域。

texture = new NinePatch(yourTexture, A, B, C, D)

ABCD对应于以下图像:

Scene2D

现在使用该九个补丁创建一个Scene2D Image,它应该正确拉伸。

如果Atlas中已有此纹理,您还可以将。{1}}行提供给.atlas文件中的图像数据,而Scene2D会自动将其作为九个补丁提取。

如果您不想使用Scene2D和/或ninepatch(但我建议您使用它),您必须自己编写行为代码。或者自己剪掉纹理并将帽子贴在矩形的左右两侧。但是为此发明了Scene2D以及更多的GUI功能。