2016-11-15 15 views
0

Ich benutze Wx Python, um ein Messgerät zu zeichnen. Und ich benutze drawarc und drawCircle. Aber das Ergebnis ist nicht so, wie ich es erwartet hatte. Der Bogen und der Kreis sind nicht genau gezeichnet und sehen hässlich aus. GaugeImagewx Python zeichnen Bogen und Kreis

   pen = wx.Pen(wx.WHITE,2) 
       dc.SetPen(pen) 
       xFullCoordinate = (x + (OutsideRadius * math.cos((0.5 * math.pi) + (FullDeg * math.pi * newValue)/((MaxValue - MinValue) * 180)))) 
       yFullCoordinate = (y + (OutsideRadius * math.sin((0.5 * math.pi) + (FullDeg * math.pi * newValue)/((MaxValue - MinValue) * 180)))) 
       xStartCoodrinate = (x + (OutsideRadius * math.cos((0.5 * math.pi) + (StartDeg * math.pi)/180))) 
       yStartCoodrinate = (y + (OutsideRadius * math.sin((0.5 * math.pi) + (StartDeg * math.pi)/180))) 
       dc.DrawArc((xFullCoordinate,yFullCoordinate),(xStartCoodrinate,yStartCoodrinate),(x, y)) 
       dc.SetBrush(wx.Brush((48,100,175))) 
       dc.DrawCircle(x, y, InsideRadius) 

Antwort

2

erstellen wx.GraphicsContext auf dem DC Sie derzeit verwenden. Siehe in wxPython Phoenix docs, um zu sehen, wie. Zeichnen auf dem GraphicsContext wird schöne Antialiased Grafiken geben. Beachten Sie, dass die Zeichnungsbefehle für die GraphicsContext leicht abweichen können.

+1

'wx.GCDC' wäre ein guter Weg, um den Code zur Verwendung von Grafikkontexten zu überführen. Es implementiert eine "wx.DC" API über einem "wx.GraphicsContext". – RobinDunn

+0

@RobinDunn: Ich habe '' GCDC'' nicht erwähnt, weil ich Probleme damit hatte, es in wxPython classic zu verwenden (es war schwierig, einen GCDC auf einen vorhandenen DC zu setzen), aber guter Punkt! – nepix32