![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Enterprise |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
Привет. Вот какая у меня проблемка появилась: надо как то сделать привязку объектов к технологической схеме. Т.е. надо выводить некоторые характеристики объекта, который выбирается путем клика по определенной области схемы. Примерно как если кликать по карте города, а показываться будут адреса домов по которым и было нажатие мышиной кнопки. Совершенно не знаю с чего и начинать :( Важен ли формат в котором сделана схема? Или можно пользоваться обычными изображениями типа jpg? Какие библиотеки для этого нужны? Может кто примерчиком поделится или описанием? Заранее благодарю за помощь!!
|
|||
|
||||
snaker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 13.4.2007 Репутация: 1 Всего: 1 |
Если пользовать JPG то придётся делать векторные изображения, грубо говоря, многоугольники, и потом при клике сверять, в какую область попадает точка(примерно, как это делается в HTML с картинками)...
Придется, наверно, организовать свой формат.... И сделать эдитор, чтоб посоздавать эти карты... Желательно, конкретизировать задачу... что именно надо получить.. |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Ну, раз никто ничего не говорит и не советует, то выскажусь хотя бы я.
![]() В общем, я бы делал так. Берём картинку в любом формате. Определяем в пикселах регионы (области) и сохраняем их в каком-либо формате. Для каждого региона тут же сохраняем и информацию, которая должна отображаться при клике. Далее берём панельку. Делаем отрисовку на ней картинки в натуральную величину. Панельку ложим в скроллпейн. Подгружаем соранённую информацию о регионах. При клике на панельке (яко и на "картинке") проверяем, не попали ли в какой-нибудь регион. Если попали - выводим в каком-либо виде нужную информацию (тултип, диалог и т.п. кошмарные вещи). Идея простейшая. Делал так в с++. На жабе не уверен только в том, можно ли нормально скроллить панель с картинкой в скроллпейне так, чтобы выглядело, будто скроллится картинка (ну, не игрался я с картинками). В остальном - всё решаемо. Идею описал в простейшем виде, но при желании нетрудно сделать вариант поумнее и поудобнее. Главное - общая суть. ;) Добавлено через 2 минуты и 58 секунд Ну вот. ![]() ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
Enterprise |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
А на счет целесообразности подключения библиотек ГИС в свое приложение для решения задачи навигации есть у кого нить идеи?
|
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Как мне кажется, ГИС работает только с векторными изображениями. Но я с нею не игрался, так что не гарантирую.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
fixxer |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 15 Всего: 27 |
Да, конечно, объектами ГИС являются векторные элементы и битмапы как символы. Однако во всех ГИС есть возможность использовать большой битмап как подложку. В общем схема такова, подкладывается битмап, по нему обрисовываются объекты и назначаются свойства. Добавлено @ 09:39
Легко. Делаем наследника JComponent, инкапсулируем в него BufferedImage, preferredSize выставляем в размер картинки, а в paintComponent делаем примерно так:
Далее кладем компонент в JScrollPane и наслаждаемся. Только не забываем сделать JScrollPane#getViewport().setScrollMode(JViewport.BLIT_SCROLL_MODE) и в компоненте setOpaque(true), чтобы не весь Viewport перерисовывался, а только то что нужно. Мог где-то накосячить - писал здесь. Это сообщение отредактировал(а) fixxer - 24.4.2007, 09:39 -------------------- ![]() |
||||||
|
|||||||
Enterprise |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
Вполне возможно что мне и скроллинг не будет нужен - схемы будут влазить на экран и так
![]() |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 15 Всего: 27 |
Думаю лучше сделать как писал nornad. Ну типа завести свой фомат на основе xml, где описан битмап, регионы на нем и что делать при щелчке на регион, например послать запрос в базу, можно в базе все хранить, но мне не нравится, не универсально. -------------------- ![]() |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Если все регионы прямоугольные и без поворотов относительно горизонтали, то в принципе можно попробовать. Я сам ни разу не делал кнопку, которую не отличить от фона, но, думаю, это не такая уж и проблема. В крайнем случае можно создать свой класс кнопки. ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
Enterprise |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
Неожиданный поворот событий
![]() Схем пока нет, но предполагаются они в векторном виде, возможно автокад. Каким образом можно использовать автокадовскую графику в своем приложении? |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 15 Всего: 27 |
У Автокада два формата dwg - закрытый, dxf - открытый с довольно-таки простой и описаной структурой.
Добавлено через 6 минут и 7 секунд Например: тынц еще тынц -------------------- ![]() |
|||
|
||||
Enterprise |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
Большое спасибо за ссылки!!
А случайно на русском ничего не завалялось в запасе, а то мой буржуйский не идеален? ![]() |
|||
|
||||
Enterprise |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
Глянул dxfviewer и его новую бета версию под свинг и появились вопросы:
1. сделан он как оконное приложение, а мне бы хотелось использовать его (не обязательно его, можно подобный)функционал в своем приложении. Как это можно сделать? 2. снова возникает вопрос с навигацией т.е. надо выводить некоторые характеристики объекта, который выбирается путем клика по определенной области схемы. Как можно этого добиться? И что для этого надо использовать? |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 15 Всего: 27 |
Дык исходники есть. Курите их, и используйте части в своем приложении.
-------------------- ![]() |
|||
|
||||
Enterprise |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.6.2006 Репутация: нет Всего: 1 |
на dxfviewer исходников нет, да еще и новый обфускатором обработан :(
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |