该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有很多magic number,修改如下
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.geom.RectangularShape;
public class FontTest
{
public static void main(String[] args)
{
Font font = new Font("黑体", Font.BOLD, 20);
AffineTransform at = new AffineTransform();
FontRenderContext frc = new FontRenderContext(at, true, true);
GlyphVector gv = font.createGlyphVector(frc, "JinCeon");
RectangularShape rs = gv.getVisualBounds();
//rs这个矩形的Y坐标为什么是负数?求解答
Shape shape = gv.getOutline((float)-rs.getX(), (float)-rs.getY());
Rectangle rect = shape.getBounds();
int width = rect.width + rect.x;
int height = rect.height;
boolean[][] view = new boolean[width][height];
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
if (shape.contains(i, j))
{
view[i][j] = true;
} else
{
view[i][j] = false;
}
}
}
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
if (view[i][j])
{
System.out.print("囧");// 替换成你喜欢的图案
} else
{
System.out.print(" ");// 全角半角和上面一致
}
}
System.out.println();
}
}
}