Ich möchte nur den Kreis, der genau 15x15 Pixel groß ist, und füllen und umreißen zeichnen. Ich benutze Java2D. Das Problem ist, als Folge der nacheinander genannten Graphics2D.fill(circle)
und Graphics2D.draw(circle)
der Kreis von 16x16 Pixel gezeichnet. Es ist wegen des internen Java2D outlinig Mechanismus, der für gegebene 15x15 Größe 16x16 Kreisumreiß liefert. Außerdem, wenn ich Java2D frage, um 14x14 Pixel Kreis Umriss zeichnen - es zeichnet genau 14x14 px. Ich habe versucht, mit Antialiasing und stroke Hinweise auf Renderer ohne Glück zu spielen.
Hier sind:Wie zeichne inneren Strich mit Java2D
RenderingHints.VALUE_STROKE_NORMALIZE
undEllipse2D.Double(0, 0, 15, 15)
UmrissRenderingHints.VALUE_STROKE_PURE
und gleiche Kontur - Mitteilung 1px Verzerrung- frühere Schlaganfall Hinweis und
Ellipse2D.Double(0, 0, 14, 14)
RenderingHints.VALUE_STROKE_NORMALIZE
,Ellipse2D.Double(0, 0, 15, 15)
Umriss und Anti-Aliasing Hinweis
Also, ich kann nicht 15px Kreis Umriss zeichnen (auch 13 px, 29 px und jede ungerade Größe) mit Java2D. Gibt es eine Möglichkeit, einen inneren Strich zu zeichnen, der Pixel am inneren Rand der Form füllt?
IMHO gibt es keine Möglichkeit, es in Java Grapics/Graphics2D-Bibliothek zu tun, weil ich in der Vergangenheit mit dem gleichen Problem konfrontiert war und keine vernünftige Lösung finden konnte. Wie auch immer, die Optionen 1 und 4 sehen gut aus, falls Sie Ihre Grafikbibliothek nicht ändern wollen. – dagi12