-
Java2D und Antialiasing
Hallo Leute,
da ist so eine Klasse, die unter anderem Linien beliebig auf ein JPanel zieht.
Leider sind das bei bestimmten Winkeln eher Treppchen.
Ziel ist es aber, solche Linien a la Paintshop oder Gimp hinzubekommen.
Die Graphics2D wird bereits verwendet.
Aber egal, was für einen Parameter ich bei Stroke einsetze, man sieht immer Treppchen.
Code:
Code:
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
// Hintergrund:
g2d.drawImage(bild,0,0,bild.getWidth(),bild.getHeight(),this);
g2d.setColor(Color.white);
g2d.setStroke(new BasicStroke(BasicStroke.JOIN_BEVEL));
for (i=0; i<p_.vliste.get_size(); i++)
{ k=p_.vliste.get_element(i);
x0=(int)p_.kn[p_.vb[k].k0].mitte.x;
y0=(int)p_.kn[p_.vb[k].k0].mitte.y;
xn=(int)p_.kn[p_.vb[k].kn].mitte.x;
yn=(int)p_.kn[p_.vb[k].kn].mitte.y;
g2d.drawLine(x0,y0,xn,yn);
}
Die BasicStrokes mit CAP_ am Anfang brachten gar nichts, JOIN_BEVEL sah etwas besser, aber noch lange nicht zufriedenstellend aus.
An welchenSchrauben kann man da noch drehen?
Gruß,
Ulrike
-
Habe jetzt zu den TEXT_ALIASING noch das normale ALIASING hinzugefügt,
nun sieht man zwar keine Treppen mehr, aber ein Moire.
Ändern der BasicStroke-Breite auf 2 ließ auc dieses verschwinden.
Also zusammengefasst:
Code:
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.white);
g2d.setStroke(new BasicStroke(2);
...
g2d.draw(new java.awt.geom.Line2D.Double(x0,y0,xn,yn)); // etwas weniger Moire als beim Verwenden von drawLine