it-swarm.com.de

So ändern Sie die Schriftgröße in drawString Java

Wie kann ich die Schriftgröße in g.drawString("Hello World",10,10); vergrößern?

31
zbz.lvlv
g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize)); 

Die Schriftgröße ist a in. Die API für drawString gibt an, dass die Parameter x und y Koordinaten sind und nichts mit der Textgröße zu tun haben. 

57
John Snow

Da Sie nicht darauf zählen können, dass eine bestimmte Schriftart verfügbar ist, empfiehlt es sich, eine neue Schriftart von der aktuellen Schriftart abzuleiten. Dies gibt Ihnen die gleiche Familie, dasselbe Gewicht usw., nur größer ...

Font currentFont = g.getFont();
Font newFont = currentFont.deriveFont(currentFont.getSize() * 1.4F);
g.setFont(newFont);

Sie können auch TextAttribute verwenden. 

Map<TextAttribute, Object> attributes = new HashMap<>();

attributes.put(TextAttribute.FAMILY, currentFont.getFamily());
attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD);
attributes.put(TextAttribute.SIZE, (int) (currentFont.getSize() * 1.4));
myFont = Font.getFont(attributes);

g.setFont(myFont);

Die TextAttribute-Methode bietet oft eine noch größere Flexibilität. Beispielsweise können Sie das Gewicht wie im obigen Beispiel auf Halbfett setzen.

Ein letzter Vorschlag ... Da die Auflösung der Monitore unterschiedlich sein kann und mit der Technologie immer weiter ansteigt, sollten Sie keinen bestimmten Betrag hinzufügen (z. B. getSize () + 2 oder getSize () + 4). Auf diese Weise ist Ihre neue Schriftart konstant proportional zur "aktuellen" Schriftart (getSize () * 1.4), und Sie werden Ihren Code nicht bearbeiten, wenn Sie einen dieser Nice 4K-Monitore erhalten.

13
daveca
Font myFont = new Font ("Courier New", 1, 17);

Die 17 steht für die Schriftgröße. Sobald Sie das haben, können Sie setzen:

g.setFont (myFont);
g.drawString ("Hello World", 10, 10);
3
Tiffany Tran

Ich habe ein Bild unter hier , mit dem folgenden Code. Ich kann alle Dinge auf dem Text, die ich schreiben wollte, kontrollieren (z. B. Unterschrift, transparentes Wasserzeichen, Text mit unterschiedlicher Schrift und Größe). 

 import Java.awt.Font;
    import Java.awt.Graphics2D;
    import Java.awt.Point;
    import Java.awt.font.TextAttribute;
    import Java.awt.image.BufferedImage;
    import Java.io.ByteArrayOutputStream;
    import Java.io.FileOutputStream;
    import Java.io.IOException;
    import Java.net.URL;
    import Java.util.HashMap;
    import Java.util.Map;

    import javax.imageio.ImageIO;

    public class ImagingTest {

        public static void main(String[] args) throws IOException {
            String url = "http://images.all-free-download.com/images/graphiclarge/bay_beach_coast_coastline_landscape_nature_nobody_601234.jpg";
            String text = "I am appending This text!";
            byte[] b = mergeImageAndText(url, text, new Point(100, 100));
            FileOutputStream fos = new FileOutputStream("so2.png");
            fos.write(b);
            fos.close();
        }

        public static byte[] mergeImageAndText(String imageFilePath,
                String text, Point textPosition) throws IOException {
            BufferedImage im = ImageIO.read(new URL(imageFilePath));
            Graphics2D g2 = im.createGraphics();
            Font currentFont = g2.getFont();
            Font newFont = currentFont.deriveFont(currentFont.getSize() * 1.4F);
            g2.setFont(newFont);


            Map<TextAttribute, Object> attributes = new HashMap<>();

            attributes.put(TextAttribute.FAMILY, currentFont.getFamily());
            attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_SEMIBOLD);
            attributes.put(TextAttribute.SIZE, (int) (currentFont.getSize() * 2.8));
            newFont = Font.getFont(attributes);

            g2.setFont(newFont);
            g2.drawString(text, textPosition.x, textPosition.y);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(im, "png", baos);
            return baos.toByteArray();
        }
    }
2
Laxman G

codebeispiel unten:

g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
g.drawString("Welcome to the Java Applet", 20 , 20);
0
Kitty