我需要在图像的中心写入文本。要写入的文本并不总是相同的。
我使用的代码在这里:
// Here I first draw the image
g.drawImage(img, 22, 15, 280, 225, null);
// I get the text
String text = photoText.getText();
// Set the text color to black
g.setColor(Color.black);
// I draw the string
g.drawString(text, 79.5F, 220.0F);
问题是文本不在图像的中心,我该怎么办?
我只需要在水平中心绘制文本。
4条答案
按热度按时间cqoc49vn1#
使用
JLabel
工作量较小,但是FontMetrics
(如此处所示)将允许您直接管理几何体。pdsfdshx2#
一个可能的解决方案是:在JPanel中绘制图像,确保将面板的preferredsize设置为图像的大小,让JPanel使用GridBagLayout,并将文本放置在添加到JPanel的JLabel中,而不使用GridBagConstraints。这是一种将JLabel在JPanel中居中的方法。
ss2ws0br3#
简单的方法是使用一个带有图标和文本的JLabel,然后将水平/垂直文本位置设置为CENTER,文本将绘制在图像的中心。
从代码中可以看出,您试图在图像底部附近绘制文本。在这种情况下,您可以使用带有Icon的JLabel作为容器。然后,您可以将布局设置为类似于BoxLayout的布局,并添加另一个带有文本的标签。
这两种方法都不需要自定义绘制。
我的意思是,我必须在图像的中心写入文本,然后保存图像
您可以使用Screen Image创建任何组件的图像,前提是您要在GUI上显示图像和文本。
或者,如果你只是在讨论阅读一张图片,添加文本到图片中,然后保存图片,那么你需要创建一个BufferedImage,在上面绘制图片,然后在上面绘制文本。你需要使用垃圾神提到的FontMetrics类。我的建议没有帮助。
icomxhvb4#
我使用
TextLayout
使文本正确居中:以下是创建图像并将其保存为文件的方法: