Painting How-To
Gmail
soutojohn at gmail.com
Mon Dec 3 21:58:26 PST 2007
Skipped content of type multipart/alternative-------------- next part -----=
---------
import wx
class Canvas(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
sizer=3Dwx.BoxSizer(wx.VERTICAL)
self.test=3Dwx.Panel(self, -1, size=3D(256, 256))
sizer.Add(self.test)
self.SetSizer(sizer)
self.buffer=3Dwx.EmptyBitmap(256, 256)
dc=3Dwx.MemoryDC()
dc.SelectObject(self.buffer)
dc.SetBrush(wx.Brush('WHITE'))
dc.FloodFill(0, 0, wx.Colour(0, 0, 0))
dc.SelectObject(wx.NullBitmap)
self.request_redraw=3DTrue
self.last_x, self.last_y=3D-1, -1
self.sel_x, self.sel_y=3D-1, -1
self.test.Bind(wx.EVT_PAINT, self.OnPaint)
self.test.Bind(wx.EVT_IDLE, self.OnIdle)
self.test.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
self.test.Bind(wx.EVT_MOTION, self.OnMotion)
self.test.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
def OnPaint(self, event):
dc=3Dwx.BufferedPaintDC(self.test, self.buffer)
def OnIdle(self, event):
if self.request_redraw:
self.request_redraw=3DFalse
self.Refresh(False)
def OnLeftDown(self, event):
if self.sel_x < 0:
self.sel_x, self.sel_y=3Devent.GetX(), event.GetY()
def OnMotion(self, event):
dc=3Dwx.ClientDC(self.test)
if self.sel_x > -1:
dc.DrawLine(self.sel_x, self.sel_y, self.last_x, self.last_y)
self.request_redraw=3DFalse
self.last_x, self.last_y=3Devent.GetX(), event.GetY()
def OnLeftUp(self, event):
dc=3Dwx.BufferedDC(None, self.buffer)
dc.DrawLine(self.sel_x, self.sel_y, self.last_x, self.last_y)
self.sel_x, self.sel_y=3D-1, -1
a=3Dwx.App(0)
f=3Dwx.Frame(None, -1)
Canvas(f)
f.Show(True)
a.MainLoop()
More information about the wxpython-users
mailing list