当小部件尺寸与存储图像的尺寸不同时图像失真

Posted

技术标签:

【中文标题】当小部件尺寸与存储图像的尺寸不同时图像失真【英文标题】:Image distorted when widget size differs from dimensions of stored image 【发布时间】:2016-04-16 03:21:32 【问题描述】:

我有一个像这样的方形按钮:

from kivy.app import App
from kivy.uix.button import Button


class MyTestApplication(App):
    def build(self):
        b = Button(size_hint=(None, None), height=200, width=200,
                   background_normal='my_icon.png')

        return b

MyTestApplication().run()

当我使用的按钮大小与存储的图像不同时,我设置为按钮背景的图像会失真。

图片my_icon.png是这样的:

当我使用height=100width=100 时(这些是实际尺寸 my_icon.png) 看起来和预期的一样。

但是,当我使用更小或更大的值时,我会得到以下信息:

问题: 是什么导致了这种失真,我该如何解决?

【问题讨论】:

@yoavglazner 帖子中的最后两张图片是屏幕截图;第一个是实际图像,第二个和第三个是扭曲的图像。 (我一直把它们包括在内。如果问题有什么不清楚的地方,请告诉我,以便我可以编辑它。虽然接受的答案解决了我的问题) 【参考方案1】:

失真是由border属性引起的,可以通过将其设置为border=(0, 0, 0, 0)来修复。 更多信息在这里: https://kivy.org/docs/api-kivy.uix.button.html#kivy.uix.button.Button.border

【讨论】:

以上是关于当小部件尺寸与存储图像的尺寸不同时图像失真的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中更改容器小部件中的背景图像

针对不同屏幕尺寸在特定像素位置绘制小部件

Android中的相机,如何获得最佳尺寸,预览尺寸,图片尺寸,视图尺寸,图像失真

Flutter - AnimatedBuilder ,第一次加载时出现动画/小部件错误

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

如何将小部件尺寸传递给 __init__