在java中绘制文本与大纲

我正在使用Java中的graphcis2d,目前正在使用它将文本绘制到bufferedImage中

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反转顺序,并且不会使字母彼此流动。

有人可以向我解释如何用一种颜色呈现阿拉伯文本并用另一种颜色绘制轮廓吗?

下面是我将要使用的文本示例:الرحمن

您可以在getOutline()返回的字形的Shape上使用createStrokedShape()方法。 另见CompositeStroke , 在此处演示。

尝试使用

 layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags) 

而不是createGlyphVector

一个技巧是在轮廓颜色中多次绘制文本,通过轮廓宽度在+/- x和+/- y方向上改变位置,然后在标称位置绘制前景色。 它并不完美,但如果轮廓相对于字母的笔划宽度不太厚,它看起来会很好看。