![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| User1302 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.11.2010 Репутация: нет Всего: нет |
Нужно сделать бесконечный холст Canvas.
Что имеется ввиду.. На холсте, например JComponent - обьекты, кот. себя отрисовывают с помощью переданной графики Graphics2D По идее - интерфейс Renderer с методом paintRenderer(Graphics2D g); Собственно таскать их по холсту, что значит менять координаты, где их рисовать - не проблема. Не проблема также сделать перетаскивание всего холста и масштабирование с помощью AffineTransform. Задача такова, что если компонент попадает в JViewPort, нужно автоматическое позиционирование скроллБаров в JViewPort. То есть, при перетаскивании холста (AffineTrnsform.translate()), например, влево, задвинув при этом рисунок слева за границу родительского компонента, должен появляться скроллбар, причем с нужной позицией ползунка - с правого края, или посередине примерно, если справа рисунок также выходит за рамки родительского компонента. То же самое должно происходить при перетаскивании не холста, а самого рисунка.. Первое что приходит в голову - поиграться с Translate, JviewPort.setViewPosition. Задача, кажется, нетривиальна. Также, предполагаемое мною решение не очень красивое и боюсь создавать велосипед... Может, кто уже с подобным сталкивался? В нете пока ничего не накопал |
|||
|
||||
| Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 4 Всего: 16 |
Вы сами-то поняли, что написали? Как соотносится бесконечный холст с позицией ползунка? Если есть ползунок с текущей позицией, то его можно подвинуть как к началу, так и к концу. То есть холст по определению имеет начало и конец в каждом измерении. При бесконечном холсте ползунок всегда должен быть строго в центре, так как расстояние до краев в обе стороны бесконечно.
|
|||
|
||||
| User1302 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.11.2010 Репутация: нет Всего: нет |
Бесконечный потому, что бесконечно (разумеется, в приемлемых пределах) можно перетаскивать рисунки в любую сторону.
При этом меняется только позиция ViewPort относительно рисунка с соответствующим размещением ползунком. Ползунки автоматически располагаются таким образом, чтоб до рисунка можно было всегда добраться с помощью ползунков, куда бы его(рисунок) не потянул пользователь. Также, автоматически ползунки реагируют на перетаскивание самого холста с рисунком(операция translate(tx, ty)). Получается, что preferredSize холста меняется в зависимости от изменения положения рисунка относительно видимой области. Чем дальше мы затягиваем рисунок за границы видимой области холста(или перемещаем холст с рисунком), тем больше становится prefferedSize и, следовательно, тем меньше становятся ползунки и больше становятся области(полосочки), где можно передвигать эти самые ползунки, чтоб добраться до рисунка. Чем ближе с помощью ползунков пользователь приближается к рисунку, тем меньше становится preferredSize холста, больше становятся ползунки и, когда рисунок опять оказывается перед пользователем (и полностью помещается в видимой области), ползунки пропадают вовсе. При этом preferredSize холста по идее становится равным размеру рисунка, пропадает потребность в ползунках и они скрываются. Выходит так, что на холсте можно рисовать в любом месте, а потом добраться туда с помощью ползунков. За формулировку извините, если не совсем понятно. Попытаюсь что-нибудь накропать и выложить код. Спасибо! |
|||
|
||||
| kamre |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 2 Всего: 13 |
В теории, конечно, так и будет |
|||
|
||||
| User1302 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.11.2010 Репутация: нет Всего: нет |
Смотрел я yEd - то, что нужно. Жаль, код закрытhttp://forum.vingrad.ru/html/emoticons/pack/search.gif |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |