web-dev-qa-db-ja.com

drawString Javaのフォントサイズを変更する方法

g.drawString("Hello World",10,10);でフォントサイズを大きくする方法

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

フォントサイズがaの場合。 drawStringのAPI は、xおよびyパラメータが座標であり、テキストのサイズとは関係がないことを示します。

59
John Snow

特定のフォントが利用可能であることを期待することはできないため、現在のフォントから新しいフォントを派生させることをお勧めします。これにより、同じ家族、体重などがより大きくなります...

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)に比例し、これらのNice 4Kモニターの1つを取得するときにコードを編集することはありません。

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

17はフォントサイズを表します。それができたら、以下を置くことができます:

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

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

以下のコード例:

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