How to make the font size bigger in g.drawString("Hello World",10,10);
?
问问题
214723 次
5 回答
74
g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
其中 fontSize 是一个 int。drawString的API声明 x 和 y 参数是坐标,与文本的大小无关。
于 2013-08-15T09:27:58.423 回答
22
因为您不能指望特定字体可用,所以一个好的方法是从当前字体派生新字体。这给了你同样的家庭,体重等。只是更大......
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
(
于 2015-05-14T23:02:10.533 回答
7
Font myFont = new Font ("Courier New", 1, 17);
17 代表字体大小。一旦你有了它,你可以把:
g.setFont (myFont);
g.drawString ("Hello World", 10, 10);
于 2015-12-27T19:44:43.163 回答
4
下面的代码示例:
g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
g.drawString("Welcome to the Java Applet", 20 , 20);
于 2016-10-21T01:13:46.917 回答
3
我在这里有一张图片,使用下面的代码。我能够控制我想写的文本上的任何内容(例如,签名、透明水印、具有不同字体和大小的文本)。
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();
}
}
于 2016-11-11T07:04:11.700 回答