我想在界面中添加图片,但是图片太大了,我不知道如何更改大小或位置。
我只能显示图片,但是图片太大,无法覆盖所有内容。所以这是代码:
self.png = wx.StaticBitmap(self, -1, wx.Bitmap("image.png", wx.BITMAP_TYPE_ANY))
答案 0 :(得分:0)
最快的方法是根据需要使用图像的副本resized
。
但是,您可以使用wx.Image
,它提供选项Scale
或Rescale
以及Resize
,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
。