|
伍:上菜篇
1、wkb源代码
略
2、sketch.py源代码
#-*- encoding:GBK -*-
import wx
class SketchWindow(wx.Window):
def __init__(self, parent, ID):
wx.Window.__init__(self, parent, ID)
self.SetBackgroundColour("White")
self.color = "Black"
self.brush = wx.Brush("Blue")
self.thickness = 2
self.pen = wx.Pen(self.color, self.thickness, wx.SOLID)#1 创建一个wx.Pen对象
self.lines = []
self.curLine = []
self.pos = (0, 0)
self.size = []
self.extent = []
self.ratio = 0.0
self.InitBuffer()
#2 连接事件
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_IDLE, self.OnIdle)
self.Bind(wx.EVT_PAINT, self.OnPaint)
#self.Bind(wx.EVT_MENU, self.OnQuit, id=109)
wx.EVT_MENU(parent, 211, self.OnLine)
wx.EVT_MENU(parent, 212, self.OnPolygon)
#Menu
menuBar=wx.MenuBar()
mFile=wx.Menu()
mFile.Append(101, '打开(&O)', '打开文件')
mFile.Append(102, '保存(&S)', '保存文件')
mFile.Append(103, '关闭(&C)', '关闭文件')
mFile.AppendSeparator()
mFile.Append(109, '退出(&X)', '退出系统')
menuBar.Append(mFile, '文件(&F)')
mView=wx.Menu()
mView.Append(201, '放大(&I)', '放大视图')
mView.Append(202, '缩小(&O)', '缩小视图')
mView.Append(203, '平移(&P)', '平移视图')
mView.AppendSeparator()
mView.Append(211, '线划(&L)', '线段样式')
mView.Append(212, '填充(&S)', '填充样式')
menuBar.Append(mView, '视图(&V)')
parent.SetMenuBar(menuBar) #parent:SetMenuBar对应于frame,故使用parent
def InitBuffer(self):
self.size = self.GetClientSize()
#3 创建一个缓存的设备上下文
self.buffer = wx.EmptyBitmap(self.size.width, self.size.height)
dc = wx.BufferedDC(None, self.buffer)
#dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
#4 使用设备上下文
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
self.DrawLines(dc)
self.reInitBuffer = False
def GetLinesData(self):
return self.lines[:]
def SetLinesData(self, lines):
self.lines = lines[:]
self.InitBuffer()
self.Refresh()
def SetExtent(self, Extent):
if self.extent == []:
for i in range(4): self.extent.append(Extent)
else:
if Extent[0] self.extent[1]: self.extent[1] = Extent[1]
if Extent[2] self.extent[3]: self.extent[3] = Extent[3]
#wx.MessageDialog(None,str(self.extent)).ShowModal()
RatioX = self.size.width / (self.extent[1] - self.extent[0])
RatioY = self.size.height / (self.extent[3] - self.extent[2])
if RatioX |
|
|