Java: Как получить размеры экрана из графического объекта - PullRequest
6 голосов
/ 15 ноября 2011

Я работаю над геометрической программой, в которой мне нужно рисовать «бесконечные» линии. У моего класса Line есть метод

public void draw(Graphics2D g){
    //... calculate x1,y1,x2,y2 here ...
    g.draw(new Line2D.Double(x1,y1, x2,y2));
}

Моя идея состоит в том, чтобы выбрать координаты, достаточно большие, чтобы они были за пределами видимой поверхности. Но я не знаю, и это мой вопрос, как мне узнать координаты углов видимой поверхности? Графический метод getClip () звучит хорошо, но, очевидно, он возвращает только пользовательский клип, который пользователь установил ранее. Видимо, то, что мне нужно, называется «зажимом устройства» в документации.

И прежде чем вы предложите большую длину, например 10000, я не имею в виду размер пикселя здесь. Я использую преобразования для масштабирования и трансляции и тому подобное, так что 10000 может быть хорошо видно.

редактирование: Я просто хотел рассказать вам, что я в итоге сделал: я определил достаточно большие константы для максимальной ширины и высоты экрана (их, возможно, потребуется настроить через 10 лет), затем я применяю обратное преобразование моего текущего отображения к этому «экрану», чтобы знать необходимую длину моих «бесконечных» линий. То есть проблема не решена, ограничивается только одним местом в коде.

Ответы [ 2 ]

8 голосов
/ 15 ноября 2011

Является ли

Rectangle bounds = g.getDeviceConfiguration().getBounds()

тем, что вам нужно, возможно?Я сам не знаю, но просто просматривая документы, это выглядит как разумная ставка ...

1 голос
/ 15 ноября 2011

Как насчет

java.awt.Toolkit.getDefaultToolkit().getScreenSize()

, который возвращает объект размера с размером экрана.

Надеюсь, это поможет.

...