2013-03-14 17 views
9

Jak uzyskać rozmiar ekranu w Javie?Pobierz rozmiar ekranu w Javie

Nie rozdzielczość ekranu, rozmiar ekranu/monitora w calach i współczynnik proporcji. Opracowana aplikacja musi wyświetlać pewien test, który musi mieć taki sam rozmiar, niezależnie od rozmiaru ekranu i proporcji ekranu. Powiedzmy, że chcemy wyświetlić prostokąt o szerokości 2 cm i wysokości 2 cm i chcemy, aby był taki sam dla każdego możliwego typu karty graficznej.

+0

Myślę, że nie jest to możliwe, ponieważ powinieneś znać DPI ekranu, aby obliczyć rzeczywisty rozmiar, ale to [wydaje się niemożliwe] (http://stackoverflow.com/questions/4707756/how-to-correctly-detect-dpi -of-display-with-java) [w Javie] (http://stackoverflow.com/questions/6544510/how-to-get-the-screen-dpi-in-java) – bsiamionau

+0

Czy sprawdziłeś tę odpowiedź: http : //stackoverflow.com/questions/4322253/screen-display-size – NilsH

+0

Wypróbuj 'getDefaultTransform' w 'GraphicsConfiguration'. –

Odpowiedz

2

Myślę, że odpowiedź jest taka, że ​​nie jest to możliwe w czystej Javie i prawdopodobnie wcale.

Możesz uzyskać dostęp do wyświetlanego rozmiaru ekranu w pikselach i nominalnego skalowania (dpi) w Javie, za pośrednictwem domyślnego obiektu Toolkit. Jednak są one często niedokładne ... i prowadziłoby to do kwadratów innych niż kwadratowe.

Być może będziesz w stanie uzyskać dokładniejsze wartości za pomocą natywnego kodu, ale z pewnością nie będzie to przenośne. Ten Q/A mówi, że to niemożliwe - How to get screen's physical size (i.e. in inches)?

0

Oto zarys jednego podejścia do kalibracji konkretnego wyświetlacz w środowisku testowym:

  • contruct prostokąt kalibracji, który zakłada dowolną liczbę pikseli/cal (DPI). Szacunek można uzyskać od GraphicsConfiguration#getNormalizingTransform().

  • Renderuj ten prostokąt skalowany do domyślnej wartości DPI.

  • Dodaj bąki dla DPI w poziomie i pionie.

  • Poproś użytkownika, aby dopasował obracanie, aby prostokąt miał pożądane wymiary.

  • Zapisz wartości w java.util.Preferences do późniejszego wykorzystania.

  • Użyj GraphicsDevice#getIDstring(), aby zidentyfikować określone kalibracje urządzenia.

Uzupełnienie: Podobna funkcja jest dostępna w ImageJ w oknie na Analyze > SetScale…, pokazano w temacie wiki SpatialCalibration.

+0

i jest to idealne rozwiązanie na następny czas: D, kalibracja użytkownika –