如何在drawString Java中更改字体大小

时间:2013-08-15 09:10:35

标签: java graphics fonts awt drawstring

如何在g.drawString("Hello World",10,10);

中增大字体大小

6 个答案:

答案 0 :(得分:59)

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

其中fontSize是int。 API for drawString表示x和y参数是坐标,与文本的大小无关。

答案 1 :(得分:13)

因为您无法指望特定字体可用,所以一种好方法是从当前字体派生新字体。这给你带来了相同的家庭,体重等等...

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

您也可以使用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);

TextAttribute方法通常提供更大的灵活性。例如,您可以将权重设置为半粗体,如上例所示。

最后一个建议......因为监视器的分辨率可能不同并且随着技术的不断增加,所以请避免添加特定数量(例如getSize()+ 2或getSize()+ 4)并考虑相乘。这样,您的新字体始终与“当前”字体(getSize()* 1.4)成比例,当您获得其中一台漂亮的4K显示器时,您将无法编辑代码。

答案 2 :(得分:3)

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

17表示字体大小。一旦你有了,你可以把:

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

答案 3 :(得分:2)

我的图片位于here,使用下面的代码。我能够在我想写的文本上继续任何事情(例如,签名,透明水印,具有不同字体和大小的文本)。

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

答案 4 :(得分:0)

下面的代码示例:

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

答案 5 :(得分:-1)

您需要做的就是: 在屏幕顶部的下拉菜单中单击(窗口)。 单击(编辑器)。 单击(放大)所需的次数。