Comment changer la taille de la police en Java drawString

comment augmenter la taille de la police en g.drawString("Hello World",10,10);?

28
demandé sur mKorbel 2013-08-15 13:10:34

5 réponses

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

où fontSize est un int. API pour cordon de serrage états que les paramètres x et y sont les coordonnées, et n'ont rien à voir avec la taille du texte.

53
répondu John Snow 2014-03-07 09:54:27

parce que vous ne pouvez pas compter sur une police particulière étant disponible, une bonne approche est de dériver une nouvelle police de la police actuelle. Cela vous donne la même famille, le poids, etc. juste plus grand...

Font currentFont = g.getFont();
Font newFont = currentFont.deriveFont(currentFont.getSize() * 1.4F);
g.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() * 1.4));
myFont = Font.getFont(attributes);

g.setFont(myFont);

Une dernière suggestion... Parce que la résolution de les moniteurs peuvent être différents et continuer à augmenter avec la technologie, éviter d'ajouter un montant spécifique (comme getSize()+2 ou getSize()+4) et envisager de multiplier à la place. De cette façon, votre nouvelle police est toujours proportionnelle à la police "courante" (getSize() * 1.4), et vous n'éditerez pas votre code lorsque vous aurez un de ces jolis moniteurs 4K.

12
répondu daveca 2015-05-14 23:02:10
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
répondu Tiffany Tran 2015-12-27 19:44:43

j'ai une image localisée à ici, en utilisant le code ci-dessous. Je suis capable de contrôler n'importe quoi sur le texte que je voulais écrire (par exemple,la signature,la marque D'eau transparente, le texte avec la fonte différente et la taille).

 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
répondu Laxman G 2016-11-11 07:04:11

exemple de code ci-dessous:

g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
g.drawString("Welcome to the Java Applet", 20 , 20);
0
répondu Kitty 2016-10-21 04:00:28