How to Change Font Size in drawString Java

前端 未结 6 1681
清歌不尽
清歌不尽 2021-02-02 07:33

How to make the font size bigger in g.drawString(\"Hello World\",10,10); ?

相关标签:
6条回答
  • 2021-02-02 07:50

    I've an image located at here, Using below code. I am able to contgrol any things on the text that i wanted to write (Eg,signature,Transparent Water mark, Text with differnt Font and size).

     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();
            }
        }
    
    0 讨论(0)
  • 2021-02-02 07:54

    Because you can't count on a particular font being available, a good approach is to derive a new font from the current font. This gives you the same family, weight, etc. just larger...

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

    You can also use 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);
    

    The TextAttribute method often gives one even greater flexibility. For example, you can set the weight to semi-bold, as in the example above.

    One last suggestion... Because the resolution of monitors can be different and continues to increase with technology, avoid adding a specific amount (such as getSize()+2 or getSize()+4) and consider multiplying instead. This way, your new font is consistently proportional to the "current" font (getSize() * 1.4), and you won't be editing your code when you get one of those nice 4K monitors.

    0 讨论(0)
  • 2021-02-02 07:56
    Font myFont = new Font ("Courier New", 1, 17);
    

    The 17 represents the font size. Once you have that, you can put:

    g.setFont (myFont);
    g.drawString ("Hello World", 10, 10);
    
    0 讨论(0)
  • 2021-02-02 07:57

    code example below:

    g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
    g.drawString("Welcome to the Java Applet", 20 , 20);
    
    0 讨论(0)
  • 2021-02-02 08:03

    All you need to do is this: click on (window) on the dropdown manue on top of your screen. click on (Editor). click on (zoom in) as many times as you need to.

    0 讨论(0)
  • 2021-02-02 08:12
    g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize)); 
    

    Where fontSize is a int. The API for drawString states that the x and y parameters are coordinates, and have nothing to do with the size of the text.

    0 讨论(0)
提交回复
热议问题