Ich möchte GridLayout in Kivy mit vielen Rechteck-Schaltflächen mit einigen benutzerdefinierten Bildern mit unterschiedlicher Größe erstellen. Um dies zu tun, möchte ich das Bild skalieren (wie ich dies tun möchte, siehe unten) und dann die Teile beschneiden/ausblenden, die über die Grenzen des Widgets hinausreichen. Die Größenanpassung funktioniert gut, aber ich kann nicht herausfinden, wie die Teile außerhalb des Rechtecks versteckt/beschnitten werden. Zum Beispiel: Wenn das Widget eine Größe von 10px x 10px hat und mein Bild 100px x 200px ist, werde ich es auf 10px x 20px verkleinern und es im Widget zentrieren, aber die 5px darunter und abowe werden sichtbar sein. Ich möchte das nicht. :) Cloud jemand hilft mir bei diesem Problem?Kivy: Wie Widget wie Überlauf verhalten: versteckt
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))
Ja, das ist was ich brauchte! Danke. –