86 lines
2.1 KiB
Python
86 lines
2.1 KiB
Python
|
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()
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|