Graphics2D在图片上绘制文字时,怎么指定文字的中心距离?


如上图所示,假如黑框代表图片大小,红色的线段为图片X、Y轴的中心线。图片左上方的固定文字:名字,名字的下面是我要用Graphics2D写进去的内容,要求写进去的文字和“名字”是沿Y轴(“名字”的Y轴)对称,相当于一个“串”字一样的效果。
...
据我了解,正常的Graphics2D.drawString()好像是以文字左上方为原点进行定位?而我每次输入的名字,由于长度不同(关羽、诸葛亮、司马仲达等),可能会出现对不齐的情况(不像“串”字),我认为解决办法是用输入文字的中心距离去定位(即:以(文字的宽度/2,文字的高度/2)为坐标去定位)。
ps:高度应该不用,主要是宽度,就是定位X轴的距离即可。
...
请大神指教,谢谢


回答:

一般图形类的库,只要涉及到 字体 输出的,都会有计算字符串的绘制大小的方法
通常的函数名里都有 measure 这个词

https://docs.oracle.com/javase/tutorial/2d/text/measuringtext.html


回答:

使用 new TextLayout(iterator, frc) 计算宽高

AttributedCharacterIterator it = as.getIterator();

AttributedCharacterIterator itNoCR = asNoCR.getIterator();

FontRenderContext frc = graphics.getFontRenderContext();

LineBreakMeasurer measurer = new LineBreakMeasurer(it, frc);

measurer.nextLayout((float) wrappingWidth, 1, false);

使用 measurer 可以机型换行计算

以上是 Graphics2D在图片上绘制文字时,怎么指定文字的中心距离? 的全部内容, 来源链接: utcz.com/p/944876.html

回到顶部