2013-03-14 10 views
9

Làm thế nào để có được kích thước màn hình trong Java?Lấy kích thước màn hình trong Java

Không có độ phân giải màn hình, kích thước màn hình/màn hình tính bằng inch và tỷ lệ cỡ ảnh. Ứng dụng được phát triển phải hiển thị một số loại thử nghiệm có cùng kích thước bất kể kích thước màn hình và tỷ lệ khung hình. Cho phép nói rằng chúng tôi muốn hiển thị hình chữ nhật rộng 2 cm và cao 2 cm và chúng tôi muốn nó có cùng kích thước cho mọi loại bộ điều hợp hiển thị có thể có.

+0

Tôi nghĩ rằng điều đó là không thể, bởi vì bạn nên biết màn hình DPI để tính toán kích thước thực, nhưng nó [dường như không thể] (http://stackoverflow.com/questions/4707756/how-to-correctly-detect-dpi -of-display-with-java) [trong Java] (http://stackoverflow.com/questions/6544510/how-to-get-the-screen-dpi-in-java) – bsiamionau

+0

Bạn đã kiểm tra câu trả lời này: http : //stackoverflow.com/questions/4322253/screen-display-size – NilsH

+0

Thử 'getDefaultTransform' trong 'GraphicsConfiguration'. –

Trả lời

2

Tôi nghĩ rằng câu trả lời là nó không thể đạt được trong Java tinh khiết, và có thể không có gì cả.

Bạn có thể giữ kích thước màn hình có thể hiển thị theo pixel và tỷ lệ danh nghĩa (dpi) trong Java, thông qua đối tượng mặc định Toolkit. Tuy nhiên, chúng thường không chính xác ... và điều đó sẽ dẫn đến các ô vuông không vuông.

Bạn có thể nhận được các giá trị chính xác hơn thông qua mã gốc, nhưng điều này chắc chắn sẽ không thể di chuyển được. Q này/A nói nó là không thể - How to get screen's physical size (i.e. in inches)?

0

Dưới đây là một phác thảo của một cách tiếp cận để hiệu chỉnh một màn hình cụ thể trong một môi trường thử nghiệm:

  • contruct một hình chữ nhật hiệu chuẩn, cho rằng một số tùy ý các điểm ảnh/inch (DPI). Có thể lấy ước tính từ GraphicsConfiguration#getNormalizingTransform().

  • Làm cho hình chữ nhật đó được chia tỷ lệ với DPI được giả định.

  • Thêm trình quay cho DPI ngang và dọc.

  • Yêu cầu người dùng điều chỉnh spinners để làm cho hình chữ nhật có kích thước mong muốn.

  • Ghi lại (các) giá trị trong java.util.Preferences để sử dụng sau này.

  • Sử dụng GraphicsDevice#getIDstring() để xác định hiệu chỉnh thiết bị cụ thể.

Phụ Lục: Tính năng tương tự có sẵn trong ImageJ trong hộp thoại Analyze > SetScale…, minh họa trong chủ đề wiki SpatialCalibration.

+0

và đó là một giải pháp hoàn hảo cho lần sau: D, hiệu chuẩn người dùng –