python - wxpython 改变图像大小和位置
问题描述
我想在我的界面中添加一张图片,但是图片太大了,我不知道如何更改大小或位置。
我只能显示图片,但图片太大,涵盖了所有内容。所以这里是代码:
self.png = wx.StaticBitmap(self, -1, wx.Bitmap("image.png", wx.BITMAP_TYPE_ANY))
解决方案
最快的方法是resized
酌情使用图像的副本。
但是,您可以使用wx.Image
which 提供选项Scale
或Rescale
withResize
等Rotate
。例如:
import wx
class TestFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.MaxImageSize = 500
self.Image = wx.StaticBitmap(self, bitmap=wx.Bitmap(self.MaxImageSize, self.MaxImageSize))
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.Image, 0, wx.ALL, 10)
self.SetSizer(box)
Img = wx.Image('image/pia21970-opt.jpg', wx.BITMAP_TYPE_ANY)
# scale the image, keeping ratio
W = Img.GetWidth()
H = Img.GetHeight()
print("Actual image size Width",W,"Height",H)
if W > H:
NewW = self.MaxImageSize
NewH = self.MaxImageSize * H / W
else:
NewH = self.MaxImageSize
NewW = self.MaxImageSize * W / H
print("New image size Width",NewW,"Height",NewH)
Img = Img.Scale(NewW,NewH,quality=wx.IMAGE_QUALITY_HIGH)
self.Image.SetBitmap(wx.Bitmap(Img))
self.Show()
class App(wx.App):
def OnInit(self):
frame = TestFrame(None, -1, "wxBitmap Test")
return True
if __name__ == "__main__":
app = App()
app.MainLoop()
注意:将缩放图像的能力与一些明智的鼠标滚动相结合可以提供缩放控件。
pos=(x,y)
如果不使用,则可以使用表单来实现定位,sizers
否则sizer
控制位置并控制sizer
.
推荐阅读
- webpack - 如何获取img标签的属性?
- python-3.x - 在 PDF 中查找字符串并使用 Python 突出显示它们
- c++ - 多线程程序未按预期更新全局数组
- python - Python; 如何在不包含父目录的情况下提取文件
- jupyter-notebook - 如何将 colab 深色主题带到 Jupyter Notebook
- sorting - Halcon - 根据索引列表对元组进行排序
- batch-file - 使用批处理文件请求用户输入和替换值
- ios - IOS 13 上的后台任务(BGTaskScheduler)
- git - 如何恢复主分支中的文件
- pyspark - 在 PySpark 中满足 when 子句时的多个操作