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

2024-05-18 14:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的wxPython项目有一个带有多个嵌套大小器的框架。

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

每次调整帧的大小时,我都需要调整图像的大小(增大/缩小),这样它就可以适应大小调整器的边界。

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

  • 如何获取图像的容器宽度或高度?
  • 也许我忽略了一个自动执行的属性?

(目前,我不介意比例)

编辑:完整解决方案

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

    所以有了Mik的代码,我现在如何适应这个位置。

  2. 除了mike的解决方案:在帧上使用onSize event时,不要忘记添加event.skip()。否则尺寸器将停止重新校准。另一种方法是,使用图像的大小。

下面是完整的事件方法:

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

Tags: 方法图像selfeventimgsizewxpython解决方案
1条回答
网友
1楼 · 发布于 2024-05-18 14:22:07

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

我只需要把缩放代码用来更新你的图像。你会想确保你停止缩放你的图像超过它的最大尺寸,否则你会以很多像素化结束。

相关问题 更多 >

    热门问题