- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在测试使用 Stage 作为带有简单按钮的主菜单,使用 NinePatch 作为按钮背景。
设置此功能的代码如下所示:
NinePatch 文本按钮设置
NinePatch btnNormal9 = NinePatchHelper.processNinePatchFile("data/button_normal.9.png");
NinePatchDrawable btnNormal9Drawable = new NinePatchDrawable(btnNormal9);
TextButtonStyle style = new TextButtonStyle(btnNormal9Drawable, btnNormal9Drawable, btnNormal9Drawable);
style.font = new BitmapFont();
style.fontColor = new Color(1, 1, 1, 1);
button = new TextButton("Start Game", style);
button.setSize(200, 100);
button.setPosition(0, 0);
stage.addActor(button);
然后在我的调整大小函数中,我现在只是这样做:
调整代码大小
@Override
public void resize(int width, int height) {
camera.viewportWidth = width;
camera.viewportHeight = height;
camera.update();
}
无论窗口大小(即相机视口(viewport)的大小)如何,按钮都应位于屏幕上的 (0,0) 处,并且大小为 200 像素 x 100 像素。
NinePatch 图像(“data/button_normal.9.png”)为 26x26 像素。但使用此代码(取自此处:Loading nine-patch image as a Libgdx Scene2d Button background looks awful)裁剪为具有 4px 分区的 24x24 纹理:
创建 NinePatch
public static NinePatch processNinePatchFile(String filename) {
final Texture t = new Texture(Gdx.files.internal(filename));
final int width = t.getWidth() - 2;
final int height = t.getHeight() - 2;
return new NinePatch(new TextureRegion(t, 1, 1, width, height), 4, 4, 4, 4);
}
只要窗口尺寸是偶数,例如,这就可以正常工作。 640x400像素,如下面的屏幕截图所示:
但是,如果窗口尺寸是奇数,例如639x401 像素,则 NinePatch 无法正确缩放:
如果只有高度为奇数,那么渲染错误只发生在NinePatch的垂直缩放上,如下:
我不明白为什么会发生这种情况,因为按钮的大小和位置被硬编码为在每种情况下都相同,因此 NinePatch 应该绘制得完全相同。
如果有人可以提供任何帮助,我将不胜感激。
提前致谢。
最佳答案
好吧,我想我意识到发生了什么,我很愚蠢。
如果屏幕尺寸为奇数,则屏幕中心不再是整数像素值,而是 0.5 值。这意味着在整数位置绘制的任何内容都会变得模糊。
我认为解决此问题的最简单方法是更改调整大小方法。如果高度或宽度为奇数,请将相机的 x 或 y 位置设置为 0.5 而不是 0,如下所示。这解决了问题:)
if (width % 2 != 0) guiCamera.position.x = 0.5f;
else guiCamera.position.x = 0f;
if (height % 2 != 0) guiCamera.position.y = 0.5f;
else guiCamera.position.y = 0f;
关于java - TextButton 背景上的 NinePatch 渲染问题 (libgdx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18197660/
我有一个业务需要在运行时创建 NinePatchDrawable 对象,也就是说,从服务器接收外部 .png 图像,它必须作为 9-patch 应用于按钮的背景(例如)。 我试图创建 NinePatc
我想在我的 Android 应用程序中添加嘈杂的背景。纹理非常完美,我可以创建一个 NinePatch 图像,但当我在应用程序中实际使用它时,它会拉伸(stretch)导致整个背景出现线条。知道实现这
我要实现这张图片 area textbox1 and textbox2 ninepatch able 我怎样才能 ninepatch 正是这个?? 最佳答案 android 9-patch 有一个限制
我正在阅读 https://github.com/libgdx/libgdx/wiki/Ninepatches 我的形象 toast_patch = new NinePatch(texture, 10
因此,我尝试使用图层列表将 map 图像与透明的 ninepatch Drawable 叠加。像这样: target http://f.cl.ly/items/2b1x3c3o0w3t1z0b2o2s
每当我尝试绘制一个 ninepatch 图像和一个舞台时,最后调用的东西正在绘制。我曾尝试使用正交相机但没有成功。我尝试过的: batch.setProjectionMatrix(camera.com
我的问题是: 我需要创建一个使用 NinePatch 创建的重新缩放的位图。 我当前的系统从 NinePatch 文件创建位图。然后将其送入 NinePatch(或 NinePatchDrawable
网络中是否有来自创建的 NinePatches 的任何中心点或集合? 我认为它们是真正花哨且有用的东西。即使你不是设计师,这也能给你带来很大的好处和外观。但我认为,如果互联网上有一些这方面的集合,那就
Android NinePatch图像似乎是带有额外信息的标准 .png 文件。是否有任何地方的格式规范,因为我希望能够在其他平台上实现它? 最佳答案 This是我在该主题上找到的最直接的链接。 关于
当我尝试以编程方式使用 9patch 背景时, 它仅在以下情况下有效:(场景 1)“拉伸(stretch)区域”(顶部/左侧)大于“内容填充区域”(底部/右侧) 但如果:(场景 2)填充比拉伸(str
网络中是否有来自创建的 NinePatches 的任何中心点或集合? 我认为它们是真正花哨且有用的东西。即使你不是设计师,这也能给你带来很大的好处和外观。但我认为,如果互联网上有一些这方面的集合,那就
我对我的 Android 应用程序有一个要求,即图形上的部分应该是可定制的,方法是从服务器端检索新的颜色和图像。其中一些图像是九 block 图像。 我找不到创建和显示这些 9-patch 图像(已通
我有一个 9 补丁可绘制的 XML 格式。当我尝试使用 BitmapFactory.decode 从中获取位图时,它返回 null 。无论如何可以从该资源获取位图吗? nine_patch.xml:
我正在使用 libgdx 制作一个简单的游戏。我有一个 TextureAtlas,它有我正在尝试使用的 ninepatch: 图片保存为menu.9.png 我正在使用以下代码: Image bg =
我正在测试使用 Stage 作为带有简单按钮的主菜单,使用 NinePatch 作为按钮背景。 设置此功能的代码如下所示: NinePatch 文本按钮设置 NinePatch btnNormal9
我需要为我的新 Android 应用程序绘制位图。由于我的内容 View 设置为我创建的 Game-Panel 类。我想通过位图显示图像。只是因为它比其他任何事情都更方便、更容易做。根据我从研究中收集
今天我试着让我的 ListView 更动态一点。所以我创建了一个白色的 ninepatch-image 并使用 .setColorFilter 方法添加了一个滤色器。那不是问题。但是在应用这个之后,每
有没有办法在 android 上以编程方式更改 9-patch 图像 (png) 的颜色?我知道如何使用位图执行此操作,但不知道如何使用 9-patch ... 感谢您帮助我。 问候吉姆 最佳答案 N
我正在创建一些日历 View ,我想做的是为可点击的 LineairLayout 创建背景。 因此我创建了一个带有两张图片的 StateListDrawable: 背景图片 按下项目时的图像 到目前为
我想从 SD 或 Assets 中读取几个 NinePatch 图像,因此没有编译,而且我找不到可以完成这项工作的构造函数/工厂。我也尝试过 NinePatch 工具源代码,但它使用图像的内部结构来完
我是一名优秀的程序员,十分优秀!