我在 Java 中使用 graphcis2d,目前正在使用它来将文本绘制到缓冲图像中
Font font1 = new Font("Arial", Font.PLAIN, 120);
g2d.setFont(font1);
FontMetrics fm1 = g2d.getFontMetrics(font1);
g2d.drawString(s[1], width/2-fm1.stringWidth(s[1])/2, height/4-70);
我想用不同颜色的轮廓绘制此文本。
GlyphVector gv = font1.createGlyphVector(g2d.getFontRenderContext(), s[1]);
Shape shape = gv.getOutline();
g2d.setStroke(new BasicStroke(4.0f));
g2d.translate(width/2-fm1.stringWidth(s[1])/2, height/4-70);
g2d.draw(shape);
使用这种有效的方法的问题在于,我正在处理阿拉伯字符,使用 GlyphVector 会颠倒顺序并且不会使字母彼此流动。
有人可以向我解释如何用一种颜色渲染阿拉伯文字并用另一种颜色绘制轮廓吗?
这是我将使用的文本示例: 收起
最佳答案
一个技巧是以轮廓颜色多次绘制文本,在 +/- x 和 +/- y 方向上根据轮廓宽度改变位置,然后在标称位置绘制前景色。它并不完美,但如果轮廓相对于字母的笔划宽度不是太粗,它往往看起来相当不错。
关于java - 在java中绘制带有轮廓的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7465829/