gpt4 book ai didi

python - wxpython:自动调整静态图像(staticbitmap)的大小以适应大小

转载 作者:太空狗 更新时间:2023-10-30 01:02:46 25 4
gpt4 key购买 nike

我的 wxPython 项目有一个框架,有多个嵌套的 sizer。

其中一个 sizer 包含一个带有从文件读取的位图的 wxStaticImage。

每次调整框架大小时,我都需要调整图像大小(增大/缩小),以便它适合它的 sizer 边界。

(我认为)我知道如何调整图像大小。我不知道的是如何:

  • 如何获取图片容器的宽度或高度?
  • 也许我忽略了自动执行此操作的属性?

(目前,我不介意比例)

编辑:完整的解决方案

  1. 我对 wxStaticBitmapin.Size 的理解有误。它不描述图像的大小(即图像分辨率),而是 - wxStaticBitmapin.Size 给出了sizer的插槽尺寸,或者换句话说:当前小部件的大小.

    因此,根据 Mik 的代码,我现在知道如何放入槽中。

  2. 除了 mike 的解决方案:在框架上使用 onSize 事件时,不要忘记添加 event.skip()。否则 sizer 将停止重新对齐。或者,只需使用图像的 onSize。

这是完整的事件方法:

def bitmap1_onSize(self, e=None):
W, H = self.bitmap1.Size
if W > H:
NewW = W
NewH = W * H / W
else:
NewH = H
NewW = H * W / H
img = wx.Image(self.frame_file_picker.Path, wx.BITMAP_TYPE_ANY)
img = img.Scale(NewW,NewH)
self.bitmap1.SetBitmap(wx.BitmapFromImage(img))
e.Skip()

最佳答案

您将需要捕获 EVT_SIZE 或 EVT_SIZING。您可以查看我写的关于创建图像查看器的教程。它有一些缩放代码:http://www.blog.pythonlibrary.org/2010/03/26/creating-a-simple-photo-viewer-with-wxpython/

我只会使用该缩放代码并使用它来更新您的图像。您需要确保停止将图像放大到超过其最大尺寸,否则最终会出现大量像素化。

关于python - wxpython:自动调整静态图像(staticbitmap)的大小以适应大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705981/

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