gpt4 book ai didi

python - Kivy:如何使小部件表现得像溢出:隐藏

转载 作者:太空狗 更新时间:2023-10-30 01:29:33 24 4
gpt4 key购买 nike

我想在 Kivy 中创建 GridLayout,其中包含许多矩形按钮和一些不同大小的自定义图像。为此,我想缩放图像(我想要执行此操作的方式如下所示),然后裁剪/ overflow hidden 小部件边框的部分。调整大小效果很好,但我不知道如何隐藏/裁剪矩形外的部分。例如:如果小部件的尺寸为 10px x 10px,而我的图像为 100px x 200px,我会将其重新调整为 10px x 20px 并将其置于小部件的中心,但下方和上方的 5px 将可见。我不要那个。 :) Cloud 有人帮我解决这个问题吗?

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))

最佳答案

我会说看看 Texture.get_region: http://kivy.org/docs/api-kivy.graphics.texture.html#kivy.graphics.texture.Texture.get_region

因此您可以只使用要显示和传递的纹理部分,就好像它是一个完全不同的纹理一样。

另一种方法是使用 StencilView,但我认为这里使用 get_region 更好。

关于python - Kivy:如何使小部件表现得像溢出:隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com