我正在使用 wxPython 为项目构建剪辑优化器,我想为绘图区域布局一个简单的框架,并在下方为操作和消息布局一个小面板。
我正在这样做:
topPanel = wx.Panel(self)
# the intended drawing area, 800x600
self.planeArea = wx.Window(topPanel, -1, pos=(0, 0), size=(800, 600))
# a panel for showing messages and placing some buttons
commandArea = wx.Panel(topPanel, -1, pos=(800, 0), size=(800, 200))
button = wx.Button(commandArea, -1, label='Optimize')
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.planeArea, 0, wx.EXPAND | wx.ALL)
box.Add(commandArea, 0, wx.EXPAND | wx.ALL)
topPanel.SetSizer(box)
在我的绘图方法中,我这样做:
# I'm using clientDC because I draw the shapes after the user chooses a file, Am I doing it wrong? I still haven't figured how or when to use paintDC and left that research for later
dc = wx.ClientDC(self.planeArea)
dc.Clear()
dc.SetDeviceOrigin(0, 0)
for polygon in plane.polygons:
dc.DrawPolygon(polygon.vertices)
如果我不使用 SetDeviceOrigin,多边形是从窗口的最左边和最上面的点开始绘制的,但我想从最左边、最下面的点开始。
问题是我的图纸放错了位置,因为 0,0 是相对于整个窗口,而不是相对于我的绘图面板。
我一直在阅读文档和以下示例,但我无法解决这个问题。有谁知道我做错了什么?
我在 Mountain Lion 和 Python 2.7(PyDev 和 Eclipse)中使用 wxPython2.9-osx-cocoa-py2.7
非常感谢,
杆