我想在Kivy中创建GridLayout,其中包含许多矩形按钮和一些不同大小的自定义图像.为此,我想缩放图像(我想要这样做的方式如下所示),然后裁剪/隐藏溢出小部件边框的部分.调整大小很好,但我无法弄清楚如何隐藏/裁剪矩形之外的部分.例如:如果小部件的尺寸为10px x 10px,而我的图像为100px x 200px,我将其重新调整为10px x 20px并将其置于小部件中,但是下方的5px和abowe将是可见的.我不要那个.:)云有人帮我解决这个问题?
class PlaceIcon(Widget):
def __init__(self,image_path, **kwargs):
super(PlaceIcon, self).__init__(**kwargs)
self.bind(size=self.adjust_size)
self.image = Image(source=image_path)
self.image_path = image_path
def adjust_size(self,*args):
(a,b) = self.image.texture.size
(x,y) = self.size
(x1,y1) = self.pos
if x > y:
scale = x/a
else:
scale = y/b
x1 -= (scale*a-x)/2
y1 -= (scale*b-y)/2
with self.canvas:
self.canvas.clear()
self.background = Rectangle(texture=self.image.texture, pos=(x1,y1), size=(scale*a,scale*b))
Run Code Online (Sandbox Code Playgroud)
我想说看看Texture.get_region: http://kivy.org/docs/api-kivy.graphics.texture.html#kivy.graphics.texture.Texture.get_region
因此,您可以仅使用要显示和传递的纹理部分,就好像它是完全不同的纹理一样。
另一种方法是使用 StencilView,但我认为这里 get_region 更好。
| 归档时间: |
|
| 查看次数: |
1402 次 |
| 最近记录: |