我想加载一张图片,将其调整为给定的大小,然后在面板中特定的位置进行绘制。
所有这些都使用wxpython完成。
我该如何做呢?
提前致谢!
所有这些都使用wxpython完成。
我该如何做呢?
提前致谢!
wx.Image
有一个 Scale
方法可以用来进行缩放。其他就是普通的 wx 编码。
这里给你提供一个完整的例子。
import wx
def scale_bitmap(bitmap, width, height):
image = wx.ImageFromBitmap(bitmap)
image = image.Scale(width, height, wx.IMAGE_QUALITY_HIGH)
result = wx.BitmapFromImage(image)
return result
class Panel(wx.Panel):
def __init__(self, parent, path):
super(Panel, self).__init__(parent, -1)
bitmap = wx.Bitmap(path)
bitmap = scale_bitmap(bitmap, 300, 200)
control = wx.StaticBitmap(self, -1, bitmap)
control.SetPosition((10, 10))
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = wx.Frame(None, -1, 'Scaled Image')
panel = Panel(frame, 'input.jpg')
frame.Show()
app.MainLoop()
StaticBitmap
一旦显示后是否可以调整大小?也就是说,如果父窗口被调整大小,StaticBitmap
应该被调整大小...这很容易实现吗? - Basjimage = bitmap.ConvertToImage()
代替image = wx.ImageFromBitmap(bitmap)
,并且使用了result = wx.Bitmap(image)
代替result = wx.BitmapFromImage(image)
。 - Joachim首先,我认为wxPython文档和演示做了一个非常好的工作,解释了如何使用他们的库,特别是因为演示可以实时播放以查看效果,或者您可以还原到原始状态。这里是下载所有文件的Windows链接:
http://www.wxpython.org/download.php#binaries
话虽如此,这是演示中的示例代码:
def runTest(frame, nb, log):
bmp = wx.Image(opj('bitmaps/image.bmp'), wx.BITMAP_TYPE_BMP).ConvertToBitmap()
gif = wx.Image(opj('bitmaps/image.gif'), wx.BITMAP_TYPE_GIF).ConvertToBitmap()
png = wx.Image(opj('bitmaps/image.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap()
jpg = wx.Image(opj('bitmaps/image.jpg'), wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
panel = wx.Panel(nb, -1)
pos = 10
wx.StaticBitmap(panel, -1, bmp, (10, pos), (bmp.GetWidth(), bmp.GetHeight()))
pos = pos + bmp.GetHeight() + 10
wx.StaticBitmap(panel, -1, gif, (10, pos), (gif.GetWidth(), gif.GetHeight()))
pos = pos + gif.GetHeight() + 10
wx.StaticBitmap(panel, -1, png, (10, pos), (png.GetWidth(), png.GetHeight()))
pos = pos + png.GetHeight() + 10
wx.StaticBitmap(panel, -1, jpg, (10, pos), (jpg.GetWidth(), jpg.GetHeight()))
return panel
这里展示了如何加载图像并在面板上显示它。这里有一些未经解释的对象,但它应该给你一个大致的概述。
如果您想将图像添加到工具栏/列表/工具书等中,您将需要将其转换为位图(通常只允许位图)。
据我所知,您无法调整位图的大小,因此您需要在转换之前调整图像的大小。
这是示例的副本:
def getFolderBitmap():
img = folder_icon.GetImage().Rescale(scaleW, scaleH)
return img.ConvertToBitmap()