Bitmap verkleinert darstellen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
b.me
User
Beiträge: 17
Registriert: Donnerstag 4. März 2004, 16:25

Hey Guys!
Ich möchte ein Bitmap in einem Panel anzeigen lassen (mache es im mom als Test mit wxStaticBitmap), jedoch soll es verkleinert dargestellt werden. Leider finde ich keine passende Funktion, um dies zu bewerkstelligen.
Könnt ihr mir helfen? Grüße, b.me
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Hi b.me.

Ich hab mal ein Codebeispiel gefunden. sieht nicht schön aus und ist nicht gut programmiert, aber vielleicht hilft es Dir weiter.

Code: Alles auswählen

#!/usr/bin/env python2.3

import wx, os

class TestFrame(wx.Frame):
    def __init__(self,parent, id,title,position,size):
        wx.Frame.__init__(self,parent, id,title,position, size)

        self.jpgs = GetJpgList(".\Images") # get all the jpegs in the Images directory
        self.CurrentJpg = 0

        self.ThumbSize = (200,200)

        b = wx.Button(self, -1, "Display next")
        wx.EVT_BUTTON(self, b.GetId(), self.DisplayNext)

        self.Image = wx.StaticBitmap(self, -1, wx.EmptyBitmap(*self.ThumbSize))
        self.DisplayNext(None)

        box = wx.BoxSizer(wx.VERTICAL)
        box.Add(b, 0, wx.CENTER|wx.ALL,10)
        box.Add(self.Image, 0)

        box.Fit(self)
        self.SetAutoLayout(True)
        self.SetSizer(box)
        
        wx.EVT_CLOSE(self, self.OnCloseWindow)

    def DisplayNext(self,event):
        Img = wx.Image(self.jpgs[self.CurrentJpg], wx.BITMAP_TYPE_JPEG).Scale(*self.ThumbSize)
        self.Image.SetBitmap(wx.BitmapFromImage(Img))
        self.CurrentJpg += 1
        if self.CurrentJpg > len(self.jpgs) -1:
            self.CurrentJpg = 0

    def OnCloseWindow(self, event):
        self.Destroy()

def GetJpgList(dir):
    jpgs = [f for f in os.listdir(dir) if f[-4:] == ".jpg" or f[-4:] == ".JPG" or f[-4:] == ".jepg"]
    print "JPGS are:", jpgs
    return [os.path.join(dir, f) for f in jpgs]

class App(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        frame = TestFrame(None, -1, "wxBitmap Test", wx.DefaultPosition,(550,200))
        self.SetTopWindow(frame)
        frame.Show(True)
        return True

if __name__ == "__main__":
    app = App(0)
    app.MainLoop()
viel Erfolg

Greetz from 2bock :wink:
Antworten