2011-10-06 57 views
5

現在我覺得我一直在尋找遍佈互聯網的文本,所以我決定在這裏問一下,因爲你們總是知道答案。繪製字符串的粗邊框

那麼,在java中,我怎樣在Graphics2D元素上繪製的字符串中的每個字母周圍繪製約2個像素的邊界?

像這樣:
Text with 2px border


在此先感謝。

回答

6

我發現Javaworld一個簡單的解決方案在Java上的文本繪製輪廓:

g.setColor(Color.red); 
g.drawString("Outline", ShiftWest(x, 1), ShiftNorth(y, 1)); 
g.drawString("Outline", ShiftWest(x, 1), ShiftSouth(y, 1)); 
g.drawString("Outline", ShiftEast(x, 1), ShiftNorth(y, 1)); 
g.drawString("Outline", ShiftEast(x, 1), ShiftSouth(y, 1)); 
g.setColor(Color.yellow); 
g.drawString("Outline", x, y); 

從本質上講,你得出同樣的字符串中的每個方向移動,首先你畫在字符串前所需的顏色。這適用於一個像素輪廓,但不能很好地縮放至粗輪廓,因爲如果重複多次移動,可能會在角落中出現間隙。

另一種解決方案是使用轉換和getOutline(),它是TextLayout類的一個方法。做輪廓的例子可以在here找到。

+1

非常簡單的解決方案! –

+0

不是那裏......它錯過了UP,DOWN,LEFT和RIGHT,但這是一個非常好的解決方案。我會用它。 – marcolopes

+0

+1爲TextLayout.getOutline() – Andrea