2010-03-23 32 views
9

我想加載一個圖像,將其調整到一個給定的大小,並將其繪製在面板中的特定位置。如何使用wxpython調整大小並繪製圖像?

所有這些使用wxpython。

我該怎麼辦?

在此先感謝!

+0

感謝球員,我會稍後嘗試,並給出「接受的答案」 – 2010-03-24 09:00:28

回答

24

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

是否可以在圖像上執行onClick事件? – 2010-03-24 16:36:51

+1

是的,只需綁定StaticBitmap控件上的EVT_LEFT_DOWN即可。它的工作原理是 – FogleBird 2010-03-24 16:56:55

+0

。謝謝m8 :) – 2010-03-24 20:39:26

0

首先我認爲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 

這顯示瞭如何加載圖像,並將其顯示在面板上。有些東西在這裏沒有解釋,但它應該給你一般的要點。

+0

不調整任何圖像的大小。它只是傳遞了一個可以省略的大小。 – FogleBird 2010-03-24 01:03:14

+0

嗯,是的,你是對的,只是允許你設置圖像的特定高度和寬度,如圖所示,而不是調整圖像大小。回答更新:) – Fry 2010-03-24 15:58:32

1

如果你的意思是把圖象到工具欄/ listbook/ToolBook的等等。你必須把它轉換爲位圖(通常只允許位圖)。

就我所知,您不能重新調整位圖大小,因此您必須先調整圖像大小然後再進行轉換。

這裏是一個很好的例子http://markandclick.com/1/post/2011/12/wxpython-resize-embedded-bitmap-before-adding-it-as-a-tool.html

這裏是一個例子副本:

def getFolderBitmap(): 
    img = folder_icon.GetImage().Rescale(scaleW, scaleH) 
    return img.ConvertToBitmap() 
相關問題