All pastes #780323 Raw Edit

Something

public text v1 · immutable
·published 2007-11-18 15:32 UTC
rendered paste body
 
from id import *
 
class PaintPage(wx.Panel):
	def __init__(self, parent):
		wx.Panel.__init__(self, parent, -1)

		self.buffer=wx.EmptyBitmap(32, 32)
		self.drawing=True
		self.SetBackgroundColour("GRAY")

		self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftMouseDown)
		self.Bind(wx.EVT_LEFT_UP, self.OnLeftMouseUp)
		self.Bind(wx.EVT_MOTION, self.OnMouseMotion)
		self.Bind(wx.EVT_PAINT, self.OnPaint)

	def OnPaint(self, event):
		blowup=self.buffer.ConvertToImage().Scale(64, 64).ConvertToBitmap()
		dc=wx.BufferedPaintDC(self, blowup, wx.BUFFER_CLIENT_AREA)

	def OnLeftMouseDown(self, event):
		if event.LeftDown():
			self.SetFocus()
			self.SetXY(event)
			self.CaptureMouse()
			self.drawing=True
			self.OnMouseMotion(event, True)

	def OnLeftMouseUp(self, event):
		if not event.LeftDown() and self.drawing:
			self.ReleaseMouse()
			self.drawing=False

	def OnMouseMotion(self, event, override=False):
		if (event.Dragging() or override) and self.drawing:
			dc=wx.BufferedDC(None, self.buffer)
			dc.SetUserScale(2, 2)
			dc.SetPen(wx.Pen('BLUE', 4))
			coordinates=(self.x, self.y) + (event.GetX(), event.GetY())
			dc.DrawLine(*coordinates)
			self.SetXY(event)
			self.Refresh()

	def SetXY(self, event):
		self.x, self.y=event.GetX(), event.GetY()