2011-09-19 31 views
5

Tôi đang làm việc với graphcis2d trong Java và hiện đang sử dụng này để vẽ văn bản vào một BufferedImageVẽ văn bản với phác thảo trong 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); 

Tôi muốn vẽ văn bản này với một phác thảo màu sắc khác nhau.

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

Vấn đề với việc sử dụng phương pháp này, mà làm việc, là tôi đang làm việc với các nhân vật arabic và sử dụng GlyphVector đảo ngược trình tự, không làm cho các chữ chảy với nhau.

Có thể ai đó vui lòng giải thích cho tôi cách hiển thị văn bản tiếng Ả Rập trong một màu và có đường viền với một màu khác không?

Heres một mẫu của các văn bản tôi sẽ được sử dụng: الرحمن

Trả lời

1

Một Bí quyết là để rút ra những văn bản nhiều lần trong màu phác thảo, thay đổi vị trí theo chiều rộng phác thảo trong +/- x và +/- y hướng, sau đó vẽ màu nền trước ở vị trí danh nghĩa. Nó không phải là hoàn hảo, nhưng nó có xu hướng trông khá tốt cung cấp các phác thảo không phải là quá dày đối với chiều rộng đột quỵ của các chữ cái.

+0

tôi nhìn thấy đốm đen trên biên giới. – Sorter

+1

@Sorter - Rất tiếc khi nghe điều đó. Không có bất kỳ chi tiết nào về những gì bạn đang làm hoặc chính xác những gì bạn đang thấy, tôi không thể đoán tại sao lại như vậy. Như tôi đã nói, mặc dù, phương pháp này "không hoàn hảo". –

2

Cố gắng sử dụng

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

thay vì createGlyphVector

Các vấn đề liên quan