我有一个方形图像,我想将其显示为圆角矩形的背景。我想避免这个图像变形。这是我的意思的直观解释。
我尝试创建画布并将图像设置为 RoundedRectangle 的源以获得所需的视觉效果。然而,图像会被扭曲以适应矩形,这会改变图像的比例。这不是我想要得到的;有没有办法自动裁剪图像?我尝试使用 Kivy 2.2 的属性 fit_mode 但它不适用于 RoundedRectangle 。
这是我的Python文件:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
class CustomImage(RelativeLayout):
pass
class MyScreen(RelativeLayout):
pass
kv = Builder.load_file("draft_question.kv")
class MyApp(App):
def build(self):
return kv
if __name__ == "__main__":
MyApp().run()
这是我的 .kv 文件:
#:kivy 2.2.1
<CustomImage>:
canvas.before:
RoundedRectangle:
pos: (0,0)
size: self.size
source: "image.jpg"
radius: [40,]
#fit_mode: "cover"
MyScreen:
CustomImage:
size_hint: (0.6, 0.2)
pos_hint: {"center_x": 0.5, "center_y": 0.5}
提前感谢您的帮助!
您可以使用
Stencil
将图像剪辑为您想要的内容。这是对您的 kv
的修改:
<CustomImage>:
canvas.before:
StencilPush
RoundedRectangle:
pos: (0,0)
size: self.size
radius: [40,]
StencilUse
Rectangle:
source: 'image3.jpg'
pos: 0, 0
size: max(*self.size), max(*self.size)
StencilUnUse
RoundedRectangle:
pos: (0,0)
size: self.size
radius: [40,]
StencilPop
显示的图像部分取决于
pos
和 size
的 Rectangle
。如果您的图像是正方形的,那么您必须确保 Rectangle
也是正方形以避免变形。