2011-09-19 51 views
5

estoy trabajando con graphcis2d en Java y actualmente estoy usando esto para dibujar texto en una BufferedImagetexto Dibujo con el contorno en Java

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); 

quiero llamar este texto con un contorno diferente color.

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);   

El problema con el uso de este método, que funciona, es que estoy trabajando con caracteres arábigos y el uso de GlyphVector invierte el orden y no hace las letras fluyen entre sí.

¿Puede alguien explicarme por favor cómo redactar el texto árabe en un color y tener un esquema con otro?

Heres una muestra de texto que estaría usando: الرحمن

Respuesta

1

Un truco es para dibujar el texto varias veces en el color del contorno, la variación de la posición por la amplitud de contorno en +/- x y +/- y direcciones, luego dibuja en el color de primer plano en la posición nominal. No es perfecto, pero tiende a verse bastante bien, siempre que el contorno no sea demasiado grueso con respecto al ancho del trazo de las letras.

+0

veo puntos negros en la frontera. – Sorter

+1

@Sorter - Perdón por escuchar eso. Sin ningún detalle sobre lo que estás haciendo o exactamente lo que estás viendo, no puedo adivinar por qué. Como dije, sin embargo, este método "no es perfecto". –

2

intenta utilizar

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

en lugar de la createGlyphVector