[英]Draw a text on a image in java
我试图在图像上绘制不同的东西,在第一种情况下效果很好,但我不知道如何处理第二种情况:第一种情况: 第二种情况:
如您所见,路径更大。 这是绘制文本的代码:
public void paintComponent(Graphics g) {
super.paintComponent(g);
g = g.create();
g.setColor(Color.WHITE);
g.setFont(getFont().deriveFont(24f));
g.fillRect(0, 0, getWidth(), getHeight());
int margin = 1;
g.drawImage( this.image, margin, margin, this.image.getWidth(), this.image.getHeight(), this);
g.setColor(Color.RED);
int i=0;
if(name1!=null) {
g.drawString(name1, 50, 50);
if(i==0) {
i = i + 40;
}
}
if(path!=null) {
g.drawString(path, 40, 50 + i);
i = i + 40;
}
if(size!=null){
g.drawString(size,50,50+i);
i = i + 40;
}
if(dimention!=null){
g.drawString(dimention,50,50+i);
i = i + 40;
}
if(date!=null){
g.drawString(date, 50,50+i);
}
}
如果您只想使用 AWT,则使用 Graphics.getFontMetrics(如果不是标准字体,可选择指定字体)获取 FontMetrics,然后使用 FontMetrics.stringWidth 获取指定字符串的宽度。
例如,如果您有一个名为 g 的图形变量,请使用:
int width = g.getFontMetrics().stringWidth(text);
您必须计算绳子有多大才能在适当的位置将其切断。
String myText = "mylongtempstringformeasuring"; // The string to check.
int maxWidth = 1000; // The width of the image.
String tempString = myText;
int i = 0;
while (g.getFontMetrics().stringWidth(tempString) >= maxWidth) {
i++;
tempString = tempString.substring(0, tempString.length() - i);
}
String remainText = tempString.substring(tempString.length() - 1, myText.length() - 1);
之后,您知道在多少个字符(变量 i)之后您必须截断字符串。 之后,您可以对文本的其余部分执行相同的操作。 最好在循环中完成整个事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.