現在我覺得我一直在尋找遍佈互聯網的文本,所以我決定在這裏問一下,因爲你們總是知道答案。繪製字符串的粗邊框
那麼,在java中,我怎樣在Graphics2D元素上繪製的字符串中的每個字母周圍繪製約2個像素的邊界?
像這樣:
在此先感謝。
現在我覺得我一直在尋找遍佈互聯網的文本,所以我決定在這裏問一下,因爲你們總是知道答案。繪製字符串的粗邊框
那麼,在java中,我怎樣在Graphics2D元素上繪製的字符串中的每個字母周圍繪製約2個像素的邊界?
像這樣:
在此先感謝。
參見:Transforming Shapes, Text, and Images。在變換示例中將「原始」設置爲「文本」,將「渲染」設置爲「筆觸和填充」。
我發現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找到。
非常簡單的解決方案! –
不是那裏......它錯過了UP,DOWN,LEFT和RIGHT,但這是一個非常好的解決方案。我會用它。 – marcolopes
+1爲TextLayout.getOutline() – Andrea