我现在用wxpython做一些图像处理工作。我想用鼠标左键向下画一个点,用鼠标移动来移动绘制的点。在
下面是我的代码。按左键画点是可以的,但是当我移动鼠标时,先前绘制的点也显示出来了,这不符合我的预期。在
如何在移动鼠标时隐藏上一个点,使其看起来像是在移动这些点?在# -*- coding: utf-8 -*-
import wx
class MyFrame(wx.Frame):
isLeftDown = False
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, size=wx.Size(500, 500))
bSizer1 = wx.BoxSizer(wx.VERTICAL)
self.m_panel = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition,
wx.DefaultSize, wx.TAB_TRAVERSAL)
bSizer1.Add(self.m_panel, 3, wx.EXPAND | wx.ALL, 5)
bmp = wx.EmptyBitmap(500, 500)
self.staticBMP = wx.StaticBitmap(self.m_panel, wx.ID_ANY, bmp)
self.SetSizer(bSizer1)
# bind event
self.staticBMP.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
self.staticBMP.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
self.staticBMP.Bind(wx.EVT_MOTION, self.OnMove)
def OnLeftDown(self, event):
pos = event.GetPositionTuple()
dc = wx.ClientDC(self.staticBMP)
dc.DrawCircle(pos[0], pos[1], 5)
self.isLeftDown = True
def OnLeftUp(self, event):
self.isLeftDown = False
def OnMove(self, event):
if self.isLeftDown:
pos = event.GetPositionTuple()
dc = wx.ClientDC(self.staticBMP)
dc.DrawCircle(pos[0], pos[1], 3)
if __name__ == '__main__':
app = wx.App()
frame = MyFrame(None)
frame.Show(True)
app.MainLoop()