我试图在libGDX
中建立一个进度条,因为我有一个完整的水平图像,在两行中我试图显示该图像的2个不同宽度:
imageFull.draw(batch,10,80,600,50);
imageFull.draw(batch,10,20,100,50);
当宽度很小时,看起来很小。它拉长了,看起来很糟糕。
为什么我不能在不破坏图像左侧的情况下只显示部分图像?
任何想法如何解决?
答案 0 :(得分:0)
这是正常行为。如果您在不保持图像宽高比的情况下拉伸图像,它将会变形,它本身并不知道可拉伸部分。
9-patch会帮助你,但你不能像现在这样简单地绘制精灵(虽然可能只有SpriteDrawable
?)。
如果我在哪里,我会使用名为Actor
的{{3}} ProgressBar
。喂一个9补丁图像,然后它应该正确拉伸。或者,如果您想自己控制它,只需使用Image
,然后将此图片提供给九个补丁。
创建九个补丁的快捷方法是通过硬编码来指定它自己的拉伸区域。
texture = new NinePatch(yourTexture, A, B, C, D)
ABCD对应于以下图像:
现在使用该九个补丁创建一个Scene2D Image
,它应该正确拉伸。
如果Atlas
中已有此纹理,您还可以将。{1}}行提供给.atlas文件中的图像数据,而Scene2D会自动将其作为九个补丁提取。
如果您不想使用Scene2D和/或ninepatch(但我建议您使用它),您必须自己编写行为代码。或者自己剪掉纹理并将帽子贴在矩形的左右两侧。但是为此发明了Scene2D以及更多的GUI功能。