--- /dev/null
+import wx
+import os
+print "PID:", os.getpid()
+
+count = 0
+
+class ResultsFrame(wx.Frame):
+ def __init__(self, parent, bmp):
+ global count
+ count += 1
+ wx.Frame.__init__(self, parent, title=str(count), size=(100,100))
+ p = wx.Panel(self)
+ sb = wx.StaticBitmap(p, -1, bmp, (20,20))
+ self.Show()
+
+
+
+class TestPanel(wx.Panel):
+ def __init__(self, parent):
+ wx.Panel.__init__(self, parent)
+ b = wx.Button(self, -1, "Test", (50,50))
+ self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+ def RunTest(self, bdc, bg, fg):
+ # draw to the buffered dc
+ bdc.SetBackground(wx.Brush(bg))
+ bdc.Clear()
+ bdc.SetPen(wx.Pen(fg, 2))
+ bdc.DrawLine(0,0, 30,30)
+ bdc.DrawLine(0,30, 30,0)
+
+ # now bilt it to a bitmap
+ bmp = wx.EmptyBitmap(30,30)
+ mdc = wx.MemoryDC()
+ mdc.SelectObject(bmp)
+ mdc.Blit(0,0, 30,30, bdc, 0,0)
+ del mdc
+
+ # display the results
+ ResultsFrame(self, bmp)
+
+
+
+ def OnButton(self, evt):
+
+ # 1. test a buffered dc not using a buffer bitmap
+ bdc = wx.BufferedDC(wx.ClientDC(self), self.GetSize())
+ self.RunTest(bdc, "yellow", "red")
+ del bdc
+
+ # 2. now do one that does have a buffer bitmap
+ buf = wx.EmptyBitmap(100,100)
+ bdc = wx.BufferedDC(wx.ClientDC(self), buf)
+ self.RunTest(bdc, "red", "blue")
+ del bdc
+
+ # 3. now one without a real DC
+ buf = wx.EmptyBitmap(100,100)
+ bdc = wx.BufferedDC(None, buf)
+ self.RunTest(bdc, "purple", "yellow")
+ del bdc
+
+ # 4. finally test a real unbuffered DC
+ dc = wx.ClientDC(self)
+ self.RunTest(dc, "red", "white")
+
+
+ # blit from the last buffer back to the main window
+ buf.SetMaskColour("yellow")
+ mdc = wx.MemoryDC()
+ mdc.SelectObject(buf)
+ dc.Blit(100,100,30,30, mdc, 0,0, useMask=True)
+
+
+
+app = wx.App(0)
+frm = wx.Frame(None)
+pnl = TestPanel(frm)
+frm.Show()
+app.MainLoop()
+
+
+
+
+