Я работаю над геометрической программой, в которой мне нужно рисовать «бесконечные» линии. У моего класса 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 лет), затем я применяю обратное преобразование моего текущего отображения к этому «экрану», чтобы знать необходимую длину моих «бесконечных» линий.
То есть проблема не решена, ограничивается только одним местом в коде.