web-dev-qa-db-fra.com

Comment changer la taille de la police dans drawString Java

Comment agrandir la taille de la police dans g.drawString("Hello World",10,10);?

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

Où font size est un in. L'API de drawString indique que les paramètres x et y sont des coordonnées et n'ont rien à voir avec la taille du texte. 

57
John Snow

Dans la mesure où vous ne pouvez pas compter sur une police particulière disponible, une bonne approche consiste à dériver une nouvelle police de la police actuelle. Cela vous donne la même famille, poids, etc. juste plus grand ...

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

Vous pouvez également utiliser TextAttribute. 

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);

La méthode TextAttribute offre souvent une flexibilité encore plus grande. Par exemple, vous pouvez définir le poids sur semi-gras, comme dans l'exemple ci-dessus.

Une dernière suggestion ... Puisque la résolution des moniteurs peut être différente et continue à augmenter avec la technologie, évitez d’ajouter un montant spécifique (tel que getSize () + 2 ou getSize () + 4) et envisagez de le multiplier. De cette manière, votre nouvelle police est toujours proportionnelle à la police "actuelle" (getSize () * 1.4), et vous n'éditerez pas votre code lorsque vous obtiendrez l'un de ces moniteurs Nice 4K.

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

Le 17 représente la taille de la police. Une fois que vous avez cela, vous pouvez mettre:

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

J'ai une image située à ici , en utilisant le code ci-dessous. Je suis capable de contrôler tout ce que je voulais écrire sur le texte (par exemple, signature, marque transparente, texte avec différentes polices et tailles). 

 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

exemple de code ci-dessous:

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