AWT Antialiasing mit GlyphVectors

Status
Nicht offen für weitere Antworten.

Ken Park

Mitglied
Hallo,

ich habe eine Frage zu einer Grafikdarstellung mit AWT. Wenn ich einen String zeichnen möchte, einmal mit Antialiasing und einmal ohne, kann ich das ja wie folgt machen:

Java:
public void paint(Graphics graph) {
               Graphics2D g = (Graphics2D) graph;
		g.setColor(Color.WHITE);
		g.setFont(new Font("Sans Serif", Font.BOLD, 50));

               // Einen String ohne AA
		g.drawString("Test", 100, 100);

                // AA aktivieren
		g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

                // Einen String mit AA
		g.drawString("Test", 100, 200);
}

In dem Fall wird der String einmal ohne AA und einmal mit AA gezeichnet. Wenn ich das ganze mit GlyphVectoren umsetze (Graphics 2D) klappt das nicht mehr:

Java:
public void paint(Graphics graph) {
		Graphics2D g = (Graphics2D) graph;

		g.setColor(Color.WHITE);
		Font f = new Font("Sans Serif", Font.BOLD, 50);
		GlyphVector gv = f.createGlyphVector(g.getFontRenderContext(), "Test");

               // Glyph ohne Antialiasing
		g.drawGlyphVector(gv, 100, 100);


		g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

                //  Glyph "mit" Antialiasing
		g.drawGlyphVector(gv, 100, 200);
}

Ich dachte erst, dass ich die falschen Rendering Hints nutze, aber ich konnte nichts ändern. Projektbedingt muss ich mit GlyphVectoren arbeiten.

Hat jemand eine Ahnung wie ich bei der Nutzung von GlyphVectoren das AA aktiviere?

Gruß
Ken
 
Zuletzt bearbeitet von einem Moderator:

Ken Park

Mitglied
Ich frag mich, warum ich immer erst nach ewiger Suche einen Forenbeitrag schreibe und es dann kurz danach wieder selbst rausfinde.

Lösung: Der FontRenderContext muss überschrieben werden.

Also statt:
Java:
GlyphVector gv = f.createGlyphVector(g.getFontRenderContext(), "Test");
jetzt
Java:
final static boolean ANTIALIASING = true;
GlyphVector gv = font.createGlyphVector(new FontRenderContext(null, ANTIALIASING ,true), "Test");

'schüss...
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben