首页 > 解决方案 > 有没有一种简单的方法可以使用 java 的 Graphics2D 对象逐个字符地淡入字符串字符?

问题描述

我希望使用 Graphics2D 对象逐个字符地将字符串绘制到屏幕上,让它们淡入。

我最初将字符串拆分为字符,并绘制了每个单独的字符,但遇到了每个字母之间适当间距的问题(因为每个字母的像素数量不同。)有没有简单的方法来完成这个?

g.drawString(currentLine(j), 250, 770+j*20);

对比

        for(int i = 0; i < currentLine(j).length(); i++) {
            String chr = new StringBuilder().append("").append(currentLine(j).charAt(i)).toString();
            g.drawString(chr, 250+i*10, 770+j*20);
        }

标签: javastringfadegraphics2d

解决方案


使用“GlyphVector”获取文本的宽度和高度。

String testString = "A";
GlyphVector gv = g.getFont().createGlyphVector(g.getFontRenderContext(), testString);
Rectangle textBound = gv.getOutline().getBounds();
double textHeight = textBound.getHeight();
double textWidth = textBound.getWidth();

推荐阅读