2010-05-16 70 views
26

Làm cách nào để có được FontMetrics mà không cần sử dụng đồ họa? Tôi muốn có FontMetrics trong hàm dựng, bây giờ tôi làm theo cách này:Java - FontMetrics không có đồ họa

BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB); 
FontMetrics fm = bi.getGraphics().getFontMetrics(font); 
int width = fm.stringWidth(pattern); 
int height = fm.getHeight(); 
+0

Tại sao bạn muốn làm điều này mà không có đồ họa? – tangens

+0

Tôi tạo điều khiển của riêng mình và tôi muốn đặt kích thước trước trong hàm tạo – piotrek

+6

Điều này hữu ích khi nhận chỉ số phông chữ khi ở chế độ không đầu, tức là công cụ dòng lệnh xử lý phông chữ thành bitmap. –

Trả lời

21

Hmm ... Khá hợp lý khi bạn cần đồ họa để lấy FontMetrics. Chiều cao phông chữ, chiều rộng, vv có thể khác nhau trên các màn hình khác nhau.

Nếu bạn có một số thành phần, bạn có thể sử dụng nó để nhận FontMetrics:

component.getFontMetrics(font); 
+0

Thx :) Nó hoạt động – piotrek

+0

@amorfis Bạn có chắc chắn rằng chiều rộng và chiều cao của phông chữ phụ thuộc vào hiển thị trong khi tôi đã chỉ định kích thước phông chữ không? –

17

Không bạn không nhất thiết cần phải nhận/sử dụng đối tượng đồ họa:

Font font = new Font("Helvetica",Font.PLAIN,12); 
Canvas c = new Canvas(); 
FontMetrics fm = c.getFontMetrics(font); 

Nếu bây giờ bạn gọi c.getGraphics() nó sẽ trả về giá trị rỗng. Điều này (canvas) cũng sẽ hoạt động trong headless mode.

+2

Đây phải là câu trả lời được chấp nhận. – SimonT