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()