作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将如何绘制一个字符串/字符数组,以便将其写成正方形,并且字符之间的间距相等?阵列越大,正方形越大。有没有办法将字符数除以长度并获得矩形中的某些坐标?
我考虑过使用 for 循环遍历数组并获取字符串的整个长度。然后将其设为我的方形边缘的长度。但我无法想象如何做到。
最佳答案
使用getFontMetrics()找出字符串将占用多少空间,然后逐个字符地绘制,添加所需的额外空间。这是代码:
import java.awt.*;
// ...
@Override
public void paint(Graphics g) {
String testString = "The quick brown fox jumps.";
Rectangle testRectangle = new Rectangle(10, 50, 200, 20);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.BLACK);
g2d.draw(testRectangle);
FontMetrics fm = g2d.getFontMetrics();
int stringWidth = fm.stringWidth(testString);
int extraSpace = (testRectangle.width - stringWidth) / (testString.length() - 1);
int x = testRectangle.x;
int y = testRectangle.y + fm.getAscent();
for (int index = 0; index < testString.length(); index++) {
char c = testString.charAt(index);
g2d.drawString(String.valueOf(c), x, y);
x += fm.charWidth(c) + extraSpace;
}
}
这就是它的样子:
为了获得更准确的结果,Graphics2D
还允许您使用float
而不是int
进行计算。
关于Java 小程序 : How do I draw a string in a square shape?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15117983/
我是一名优秀的程序员,十分优秀!