5

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 を使用すると順序が逆になり、文字が互いに流れないことです。

誰かがアラビア語のテキストをある色でレンダリングし、別の色でアウトラインを作成する方法を説明してもらえますか?

使用するテキストのサンプルを次に示します。

4

3 に答える 3

2

使ってみて

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

の代わりにcreateGlyphVector

于 2011-09-19T08:20:44.423 に答える
2

によって返されるcreateStrokedShape()グリフに対してメソッドを使用できる場合があります。こちらもご覧くださいShapegetOutline()CompositeStroke

于 2011-09-19T03:19:09.120 に答える
1

1 つのトリックは、テキストをアウトライン カラーで数回描画し、アウトラインの幅によって位置を +/- x および +/- y 方向に変化させてから、公称位置に前景色を描画することです。完璧ではありませんが、文字のストローク幅に対してアウトラインが太すぎなければ、かなり見栄えがよくなります。

于 2011-09-19T02:10:07.630 に答える