Java2D-Grafik mit anti-Aliasing

Ich bin neu in Java und versuche zu verwenden Java2D-Grafik zu erstellen, ein Bild. Aber die Ausgabe kommt als anti-Aliasing. Ich habe versucht, viele Möglichkeiten, um zu beheben, es funktioniert aber nicht. Die Charaktere sind immer verzerrt oder unsauber.

public BufferedImage createNameOnButton(String label) {
    int messageWidth = 0;
    Font font = new Font("Arial", Font.PLAIN, 11);

    BufferedImage bi = new BufferedImage(
        10, 10, BufferedImage.TYPE_INT_RGB);

    Graphics2D g2d = (Graphics2D) bi.getGraphics();
    g2d.setRenderingHint(
        RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setRenderingHint(
        RenderingHints.KEY_TEXT_ANTIALIASING,
        RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    g2d.setRenderingHint(
        RenderingHints.KEY_FRACTIONALMETRICS,
        RenderingHints.VALUE_FRACTIONALMETRICS_ON);
    g2d.setFont(font);

    bi = g2d.getDeviceConfiguration()
        .createCompatibleImage(500, 30, Transparency.BITMASK);
    FontMetrics fm = bi.getGraphics().getFontMetrics(font);
    int messageHeight = fm.getHeight() - fm.getDescent();
    for (char ch : label.toCharArray()) {
        messageWidth += fm.charWidth(ch);
    }

    bi = bi.getSubimage(50, 0, messageWidth + 10, fm.getHeight());
    Graphics g = bi.getGraphics();
    g.setColor(Color.black);
    AttributedString as = new AttributedString(label);
    as.addAttribute(TextAttribute.FONT, font);
    g.drawString(as.getIterator(), 5, messageHeight);
    g2d.dispose();
    g.dispose();
    return bi;
}

Kann bitte jemand mir helfen, den Fehler zu verbessern?

Was werden Sie erstellen ein 10x10 Bild zuerst? Dein code ist wirklich verworren, was er tun soll.
Ich bin mir nicht komplett sicher, ob ich verstehe. Von yor Frage, ich verstehe Sie nicht wollen, dass die Zeichen geglättet. Aber Lesen Sie den code, es ist kein Wunder, da heißt es ANTIALIAS_ON überall. Könnten Sie das erklären?
Dank für die Angabe, dass - getestet habe ich den code mit ANTIALIAS_OFF aber es gibt einige Zeichen, die noch kommt, da anti-Aliasing (nicht alle Zeichen) wie der vertikalen '\' N, 'a', 'v', 'e', y' , 'o' - im Grunde die Ränder der Zeichen sind nicht glatt. Gibt es etwas, was ich tun?
Auch, wie unten erwähnt - Meine Forderung ist, schreiben Sie eine Funktion zurückgibt, die ein BufferedImage, enthält einen text der Muster "rette Mich <User-Adresse>". Der Satz "rette Mich" sollte in schwarzer Farbe, während "<User-Adresse>", die gesammelt, innerhalb der Durchfluss soll in der Farbe blau. Können Sie bitte einige Eingänge auf dem gleichen?

InformationsquelleAutor Prakash | 2010-11-26

Schreibe einen Kommentar