Выполняется ли Graphics2D.draw, если фигура находится вне экрана?

В настоящее время я работаю над некоторым кодом рендеринга, и мне стало интересно, выполняется ли Graphics2D.draw(Shape) точно так же, как на экране, так и на экране. Если это так, есть ли способ проверить, отображается ли моя форма (Line2D) на экране?

1 ответ

Решение

Зависит от того, что вы подразумеваете под "точно так же".

Что касается вызовов draw-кое-что () из вашего кода, они происходят нормально. Что отличается, где-то в цепочке рендеринга обнаруживается условие, что фигура фактически не попадает в фактическую область рендеринга, и для этой фигуры фактически не выводятся пиксели.

Что касается обнаружения, если что-то "на экране", это зависит от того, как вы определяете экран. Разумно вы определяете это как область, описываемую вашим графическим объектом (которая может быть только частью экрана или полностью за кадром, черт возьми, это может быть принтер!).

При условии, что вы не изменили область клипа экземпляра Graphics, getClipBounds() дает вам прямоугольник, в котором графика фактически отображается. Если ваша графика поступает из компонента Swing, вы также можете заменить размеры компонентов для области рендеринга.

Получив реальный прямоугольник, вы можете использовать методы, предоставляемые Shape, для обнаружения коллизий (contains(), intersects() и т. Д.).

Другие вопросы по тегам