Графика в Java.

программирование java графика

Не могу найти информацию по работе с графикой в Java.
Ситуация такая: есть прямоугольная 2D сцена размером 10000x10000px. На этой сцене расположены элементы с заданными заранее координатами. У элементов могут быть дочерние элементы, координаты которых задаются относительно родителя, а не всей сцены.
Так же есть фрейм(Canvas панель размером 800x600) в котором происходит отрисовка сцены.
Ясное дело что рисовать всю сцену 10000x10000 затратно, поэтому надо найти видимые в фрейме элементы и отрисовать только их.
Вопрос заключается в том, как правильно это сделать? Есть какие-нибудь полезные книги/статьи на эту тему?
Ответы:
Задача сводится к выбору алгоритма по которому будем определять рисовать объект или нет.
Вы сами можете придумать как это сделать. К тому же, некоторая оптимизация у вас уже есть - "У элементов могут быть дочерние элементы, координаты которых задаются относительно родителя" - это упростить начальный перебор элементов.
Я бы решил эту задачу вводом grid-системы. Разделить всю область 10000x10000 на небольшие области скажем двухмерный массив, одна ячейка которого отображает состояние поля в 400х300 пикселей, в этих массивах хранить элементы которые нужно нарисовать в заданных границах, и главном цикле просто проверять что если мы смотрим на заданный grid, то отрисовать все с него. В самом худщем случае мы нарисуем картинку в 2,25 раза больше чем нужно (это число можно уменьшить, уменьшая размер гидов, при гриде 200х150 - излишек будет 1,5625 раза)


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.