【发布时间】:2021-04-03 09:48:32
【问题描述】:
我正在尝试使用 Kivy 的画布说明创建以下形状:
我已经成功地创建了一个直角梯形(下面的代码),
canvas.before:
Color:
rgba: root.background_color
Quad:
points: [self.x, self.y, self.x, self.y + self.height, self.x + (1.5*self.width), self.y + self.height, self.x + self.width, self.y]
但想知道圆角是否也可以做到这一点?
我可以想到一个解决方法,即保存一个圆形梯形的白色图像,然后用这个图像纹理一个矩形。比如……
canvas.before:
Color:
rgba: self.background_color
Rectangle:
size: self.size
pos: self.pos
source: 'rounded_trapezium.png'
现在background_color 会将白色梯形“着色”为我想要的任何颜色,这意味着我可以多次添加和重新着色相同的形状,而无需保存和加载大量图像。但我很好奇仅使用 Kivy 的画布是否可以实现相同的效果?
提前致谢。
【问题讨论】:
-
使用 Mesh 指令,您可以创建任何您喜欢的形状,但您需要编写代码来生成其顶点。您可能会发现查看 RoundedRectangle 画布指令的代码很有用,因为您想要的是相同的,但具有边界矩形偏移的角之一。
-
谢谢@inclement 我会研究网格指令。我在查找 Cavas/Graphic Instruction 源代码时遇到了一些麻烦。有机会给我发个链接吗?
标签: python kivy kivy-language kivymd