有关Java的awt或者swing实现在图片上添加文字的处理(像素和字符串长度单位转换的问题)
如题:现在小弟遇到这样的一个问题,需要在720*396的图片(就是发票纸上)上按一定规则输出数据,比如:在发票纸上原有“打印时间:”的位置后添加打印的时间,还有涉及到怎么...
如题:
现在小弟遇到这样的一个问题,需要在720*396的图片(就是发票纸上)上按一定规则输出数据,比如:在发票纸上原有“打印时间:”的位置后添加打印的时间,还有涉及到怎么处理自动换行的问题,其实我研究了一下,我是操作
Java的java.awt.Graphics2D.drawString(String str, int x, int y)方法,按照文本的格式把字符串“写在”发票纸的相应位置上,这期间遇到一个问题就是:720*396的图片是用像素来表示图片大小,而我们实际操作字符串是取得的字符串的长度,这里涉及一个把像素单位转换成字符串长度的问题,请问大牛们,我这种处理方式是否合理,Java中字符串的长度怎么转换成图片的像素单位,或者怎么把图片的像素转换成字符串的长度?从而实现字符串写在图片上具体位置的定位和完成自动换行等操作,望大牛们不吝赐教,谢谢!! 展开
现在小弟遇到这样的一个问题,需要在720*396的图片(就是发票纸上)上按一定规则输出数据,比如:在发票纸上原有“打印时间:”的位置后添加打印的时间,还有涉及到怎么处理自动换行的问题,其实我研究了一下,我是操作
Java的java.awt.Graphics2D.drawString(String str, int x, int y)方法,按照文本的格式把字符串“写在”发票纸的相应位置上,这期间遇到一个问题就是:720*396的图片是用像素来表示图片大小,而我们实际操作字符串是取得的字符串的长度,这里涉及一个把像素单位转换成字符串长度的问题,请问大牛们,我这种处理方式是否合理,Java中字符串的长度怎么转换成图片的像素单位,或者怎么把图片的像素转换成字符串的长度?从而实现字符串写在图片上具体位置的定位和完成自动换行等操作,望大牛们不吝赐教,谢谢!! 展开
3个回答
展开全部
先用java.awt.Graphics2D.getFont()取得当前正在使用的字体f,java.awt.Graphics2D.getFontRenderContext()取得当前正在使用的渲染上下文frc
然后再用Rectangle2D rect=f.getStringBounds(str,frc)就可以得到你渲染这些文字所占据的矩形,使用rect.getWidth(), rect,getHeight()就可以知道这个矩形的大小了。
反过来通过像素大小决定字符串的长度没有现成的方法。如果你的字体是等宽的可以先用上面的方法求出一个字符的大小然后自己算,不然就只能先试试一个字符,再试试两个字符……直到超过你要的长度就返回的办法了(看起来效率比较低,不过实际使用的时候不是很影响性能)
然后再用Rectangle2D rect=f.getStringBounds(str,frc)就可以得到你渲染这些文字所占据的矩形,使用rect.getWidth(), rect,getHeight()就可以知道这个矩形的大小了。
反过来通过像素大小决定字符串的长度没有现成的方法。如果你的字体是等宽的可以先用上面的方法求出一个字符的大小然后自己算,不然就只能先试试一个字符,再试试两个字符……直到超过你要的长度就返回的办法了(看起来效率比较低,不过实际使用的时候不是很影响性能)
展开全部
FontMetrics 你看下这个类 主要是做计算字符串所占大小的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把720*396的图片作为背景,用paintComponent(Graphics g),然后你想在这图片上怎么弄,就怎么弄
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询