wxPython: Verwenden des wx.BufferedPaintDC

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx

wx.SetDefaultPyEncoding("iso-8859-15")


class MyImage(wx.ScrolledWindow):
    
    def __init__(self, parent = None):
        wx.ScrolledWindow.__init__(self, parent)
        self.buffer_bmp = self.create_bitmap()
        self.Bind(wx.EVT_PAINT, self.on_paint)
        self.SetVirtualSize((600, 600))
        self.SetBackgroundColour("green")
        self.SetScrollRate(10, 10)
    
    
    def create_bitmap(self):
        bmp = wx.EmptyBitmap(600, 600)
        dc = wx.MemoryDC(bmp)
        dc.SetBackground(wx.Brush("yellow"))
        dc.Clear()
        dc.DrawCircle(300, 300, 300)
        dc.SelectObject(wx.NullBitmap)
        return bmp
    
    
    def on_paint(self, event = None):
        wx.BufferedPaintDC(self, self.buffer_bmp, style = wx.BUFFER_VIRTUAL_AREA)


class MyFrame(wx.Frame):
    
    def __init__(self, parent = None, title = "Example", size = wx.Size(400, 300)):
        wx.Frame.__init__(self, parent, -1, title, size = size)
        self.scolled_image = MyImage(self)


def main():
    """Testing"""
    
    app = wx.PySimpleApp()
    f = MyFrame()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()
Edit: Code verbessert
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten