大九片拉伸

Large ninepatch stretching

下图需要在灰色区域垂直拉伸。图像的其余部分应在水平方向上同样展开,以便填满屏幕。

所以我将 ninepatch 设置为 0, 0, 158, 28 (a, b, c, d)。当我将其用作 Table 背景时,这就是结果。

在我看来,图像 "just" 填满了屏幕,完全忽略了九块分割。

我的世界大小是 140 宽 250 高 atm。图像宽度为 733。这可能是问题所在吗?我在小图像上使用 ninepatch 时从未遇到过问题。

这是我设置图像的方式:

    winTable = new Table(skin);
    winTable.background("winpanel");
    winTable.setFillParent(true);

    stage.addActor(winTable);

//And this is how the image in the atlas is specified
winpanel
  rotate: false
  xy: 0, 298
  size: 733, 203
  split: 0, 0, 158, 28
  orig: 733, 203
  offset: 0, 0
  index: -1

我试着用数字来玩,但没有成功。我还尝试手动创建 NinePatch 并在 Image 中使用它,但我得到了相同的结果。现在我想知道是否有可能做我想做的事,也许我需要将横幅与图像的其余部分分开。但是这两个图像应该完美对齐。

这是我用于 ninepatches 的方法,对我很有效。我的地图集中没有 "split" 行,因此您可能不需要将其与此一起使用。

TextureRegion region = skin.getRegion("winpanel");
NinePatch patch = new NinePatch(region, 0, 0, 158, 28);
NinePatchDrawable drawable = new NinePatchDrawable(patch);      
winTable.setBackground(drawable);

编辑: 我刚刚注意到你提到你的世界大小是 140 宽,图像是 733 宽...这是很可能是您的问题,因为它正在压缩图像的宽度以适合您的 table。在照片编辑器中打开图像并缩放图像,使其宽度与您希望它在游戏中显示的宽度完全相同。然后用新图像大小的新值尝试 ninepatch,看看它是否有效。