如何在不使用图像的情况下在libgdx中创建简单的圆角矩形按钮?该按钮应该有一个阴影,并应处理按下状态。我希望它是编程方式,以便稍后更改颜色,样式等。如何在libgdx中创建一个简单的圆角矩形按钮?
1
A
回答
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
)每一个参数被改变,需要进行渲染的时间,这将重新绘制图像。
+0
谢谢,但我想这种方法不是很高效...... – user1615898
+0
它做O(宽*高)操作相当快(但不是在你的循环中),但你不需要每帧重新渲染图像,而只有当任何值被改变时。 –
相关问题
- 1. 如何在WM6中创建圆角矩形按钮?
- 2. 如何在Flex中创建一个虚线圆角矩形?
- 3. 用GWT创建一个圆形按钮
- 4. 如何在Swift中创建一个圆形按钮?
- 5. 如何在xaml中创建一个矩形按钮
- 6. 创建圆形按钮
- 7. 如何在X11中创建圆角矩形窗口
- 8. 如何在android中创建一个带有圆形的方形框架按钮?
- 9. 带一个圆角的矩形几何
- 10. 在Iphone SDK中创建圆形按钮
- 11. 如何创建一个自定义按钮,可以更改像圆角矩形的图像
- 12. 如何在矩形的底部svg中画一个圆角JS
- 13. 如何在Android上为GridView创建一个圆角矩形边框?
- 14. 圆形到圆形三角形(菜单按钮切换)
- 15. 在libgdx中创建一个圆形轨道
- 16. 如何在圆形矩形按钮中添加箭头图标
- 17. 如何在win32 API中使用visual C++创建圆形/圆形按钮
- 18. LibGDX - 我如何添加一个简单的按钮?
- 19. 如何创建一个方形按钮?
- 20. 如何制作表单圆角矩形或圆形或三角形
- 21. 圆角矩形在pygtk的
- 22. Silverlight中的圆角矩形
- 23. 创建多个矩形java libgdx
- 24. 在按钮内围绕文本的圆角矩形框
- 25. 如何创建一个圆角的NSImageView?
- 26. 如何在WPF应用程序中创建椭圆形按钮?
- 27. 如何在矩形中创建矩形?
- 28. 圆形矩形按钮连接到ViewController.h
- 29. 我们如何使用vC++中的win32 API创建一个圆形的按钮
- 30. 创建一个只有两个圆边的矩形形状
你可以具体说明你的意思吗?你可以在屏幕上看到的所有东西都是一个“图像”。你在具体试图避免什么,为什么? – Tenfour04