如何在不使用图像的情况下在libgdx中创建一个简单的圆角矩形按钮?按钮应该有一个阴影,应该处理按下状态。我希望它能够以编程方式轻松改变颜色,以后改变风格等。
答案 0 :(得分:1)
我对你的问题的理解是如何在程序中创建一个圆角矩形,而不必在代码之外预先生成任何图像。
我前段时间处于类似情况,我在下面编写了下面的函数,根据参数生成Pixmap
圆角矩形(所有单位都以像素为单位)。它也适用于不同的alpha值以允许不透明度(这就是为什么使用了两个Pixmap
个对象)。
如果您发现更容易呈现,则生成的Pixmap
可以很容易地传递给Texture
的构造函数。
public static Pixmap createRoundedRectangle(int width, int height, int cornerRadius, Color color) {
Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888);
Pixmap ret = new Pixmap(width, height, Pixmap.Format.RGBA8888);
pixmap.setColor(color);
pixmap.fillCircle(cornerRadius, cornerRadius, cornerRadius);
pixmap.fillCircle(width - cornerRadius - 1, cornerRadius, cornerRadius);
pixmap.fillCircle(cornerRadius, height - cornerRadius - 1, cornerRadius);
pixmap.fillCircle(width - cornerRadius - 1, height - cornerRadius - 1, cornerRadius);
pixmap.fillRectangle(cornerRadius, 0, width - cornerRadius * 2, height);
pixmap.fillRectangle(0, cornerRadius, width, height - cornerRadius * 2);
ret.setColor(color);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
if (pixmap.getPixel(x, y) != 0) ret.drawPixel(x, y);
}
}
pixmap.dispose();
return ret;
}
使用此函数创建自己的包装器对象(例如RoundedRectangle
)并不会太困难,每当其中一个参数被更改并需要渲染时,它就会重新绘制图像。