2011-09-19 19 views
5

Sto lavorando con graphcis2d in Java e attualmente sto usando questo per disegnare il testo in un BufferedImagetesto Disegno con contorno in 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); 

voglio attirare questo testo con un contorno di colore diverso.

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

Il problema con l'utilizzo di questo metodo, che funziona, è che sto lavorando con caratteri arabi e con GlyphVector inverte l'ordine e non rende le lettere scorrono uno con l'altro.

Qualcuno può spiegarmi come tradurre il testo arabo in un colore e avere un contorno con un altro?

Heres un campione del testo che sarebbe utilizzando: الرحمن

risposta

1

Un trucco è quello di disegnare il testo più volte il colore del contorno, variando la posizione per la larghezza contorno a +/- x e +/- y direzioni, quindi disegnare il colore di primo piano nella posizione nominale. Non è perfetto, ma tende ad apparire piuttosto buono purché il contorno non sia troppo spesso rispetto alla larghezza del tratto delle lettere.

+0

vedo macchie nere sul confine. – Sorter

+1

@Sorter - Mi spiace sentirlo. Senza dettagli su quello che stai facendo o esattamente quello che stai vedendo, non posso indovinare perché sia ​​così. Come ho detto, però, questo metodo "non è perfetto". –

2

tenta di utilizzare

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

al posto del createGlyphVector