102 lines
2.4 KiB
Python
102 lines
2.4 KiB
Python
|
import wx
|
||
|
|
||
|
class TestPanel(wx.Panel):
|
||
|
def __init__(self, *args, **kw):
|
||
|
wx.Panel.__init__(self, *args, **kw)
|
||
|
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||
|
|
||
|
def OnPaint(self, evt):
|
||
|
gc = wx.GraphicsContext.Create(wx.PaintDC(self))
|
||
|
|
||
|
pen = wx.Pen("navy", 2)
|
||
|
gc.SetPen(pen)
|
||
|
brush = wx.Brush((255,32,32,128))
|
||
|
gc.SetBrush(brush)
|
||
|
gc.PushState()
|
||
|
|
||
|
path = gc.CreatePath()
|
||
|
path.MoveToPoint(50, 50)
|
||
|
path.AddLineToPoint(25,25)
|
||
|
path.AddLineToPoint(50,25)
|
||
|
path.AddLineToPoint(50,50)
|
||
|
path.CloseSubpath()
|
||
|
|
||
|
gc.DrawPath(path)
|
||
|
|
||
|
gc.Scale(2,2)
|
||
|
gc.Translate(10,5)
|
||
|
gc.DrawPath(path)
|
||
|
|
||
|
gc.Translate(50,0)
|
||
|
gc.FillPath(path)
|
||
|
gc.Translate(0,5)
|
||
|
gc.StrokePath(path)
|
||
|
gc.Translate(0,5)
|
||
|
|
||
|
brush = wx.Brush((32,32,255,128))
|
||
|
gc.SetBrush(brush)
|
||
|
|
||
|
gc.FillPath(path)
|
||
|
gc.Translate(50,0)
|
||
|
gc.DrawPath(path)
|
||
|
|
||
|
gc.PopState()
|
||
|
|
||
|
points = [ (5.2, 5.9),
|
||
|
(50, 50),
|
||
|
(35, 50),
|
||
|
(25,40),
|
||
|
wx.Point2D(20.5,50.9),
|
||
|
wx.Point2D(5,25),
|
||
|
(5,6)
|
||
|
]
|
||
|
|
||
|
gc.Translate(0, 150)
|
||
|
gc.DrawLines(points)
|
||
|
gc.Translate(75, 0)
|
||
|
gc.StrokeLines(points)
|
||
|
|
||
|
|
||
|
begin = [ (0,0),
|
||
|
(0,10),
|
||
|
(0,20),
|
||
|
(0,30),
|
||
|
(0,40),
|
||
|
(0,50),
|
||
|
]
|
||
|
|
||
|
end = [ (50,0),
|
||
|
(50,10),
|
||
|
(50,20),
|
||
|
(50,30),
|
||
|
(50,40),
|
||
|
(50,50),
|
||
|
]
|
||
|
|
||
|
# in a floating point coordinate system the center of the
|
||
|
# pixel is actually at x+0.5, y+0.5, so with anti-aliasing
|
||
|
# turned on we'll get a crisper line by positioning our line
|
||
|
# segments at the 0.5 offset. For this test we'll just let
|
||
|
# the GC do the translation for us.
|
||
|
gc.Translate(0.5, 0.5)
|
||
|
|
||
|
pen = wx.Pen("purple", 1)
|
||
|
gc.SetPen(pen)
|
||
|
|
||
|
gc.Translate(75, 0)
|
||
|
gc.StrokeLineSegements(begin, end)
|
||
|
|
||
|
gc.Translate(75, 0)
|
||
|
gc.Scale(2,2)
|
||
|
gc.StrokeLineSegements(begin, end)
|
||
|
gc.DrawLines(points)
|
||
|
|
||
|
del path
|
||
|
|
||
|
|
||
|
app = wx.App(False)
|
||
|
frm = wx.Frame(None)
|
||
|
pnl = TestPanel(frm)
|
||
|
frm.Show()
|
||
|
app.MainLoop()
|