2011-10-06 30 views
5

Bây giờ tôi cảm thấy như tôi đã tìm kiếm trên internet để tìm hiểu cách thêm đường viền trên văn bản, vì vậy tôi quyết định hỏi tại đây, vì các bạn luôn biết câu trả lời.Đường viền dày của chuỗi được rút ra

Vì vậy, làm thế nào để, trong java, vẽ một đường viền khoảng 2 pixel xung quanh mỗi chữ cái trong một chuỗi được vẽ trên một phần tử Graphics2D?

Như thế này:
Text with 2px border


Cảm ơn trước.

Trả lời

6

Tôi tìm thấy một giải pháp đơn giản trong Javaworld để vẽ một phác thảo trên văn bản trong 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); 

Về cơ bản, bạn vẽ cùng một chuỗi chuyển mỗi chiều đầu tiên trước khi bạn vẽ các chuỗi trong màu mong muốn. Điều này làm việc tốt cho một phác thảo một pixel, nhưng không mở rộng tốt cho các đường viền dày vì có thể có những khoảng trống ở các góc nếu bạn lặp lại quá trình dịch chuyển nhiều lần.

Một giải pháp khác là sử dụng phép biến đổi và getOutline() là phương thức của lớp TextLayout. Một ví dụ để làm phác thảo có thể được tìm thấy here.

+1

Giải pháp rất đơn giản! –

+0

Không hoàn toàn ở đó ... nó bỏ lỡ UP, DOWN, LEFT và RIGHT, nhưng đó là một giải pháp rất tốt đẹp. Tôi sẽ dùng nó. – marcolopes

+0

+1 cho TextLayout.getOutline() – Andrea

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