purebasic.info

PureBasic forum
Текущее время: Вт янв 28, 2020 1:03 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
СообщениеДобавлено: Пт авг 09, 2019 6:39 pm 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 905
Благодарил (а): 96 раз.
Поблагодарили: 27 раз.
Пункты репутации: 5
по идее в API что то должно быть, в браузерах карты делают же
или идею подкинте как это реализовать
а то мне ничего умнее как создать массив координат в голову неприходит


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт авг 09, 2019 6:48 pm 
Не в сети
ассистент

Зарегистрирован: Вт июл 16, 2013 3:48 pm
Сообщений: 14
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
Варианты:
https://toster.ru/q/3158
https://habr.com/ru/post/301102/


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт авг 09, 2019 8:36 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 924
Благодарил (а): 2 раз.
Поблагодарили: 45 раз.
Пункты репутации: 9
Смотря какой многоугольник.
можно к примеру как прямоугольник в нутренней области сделать? :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 10, 2019 5:57 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2329
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 75 раз.
Пункты репутации: 11
Если устраивает прямоугольная область ввиде Canvas'а, то можно просто отслеживать #PB_EventType_MouseEnter у CanvasGadget().

бред
Если сложная область, то подозреваю, что нужно реализовывать некий flood fill алгоритм?
https://rosettacode.org/wiki/Bitmap/Flo ... #PureBasic


https://en.wikipedia.org/wiki/Point_in_polygon

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб авг 10, 2019 6:55 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 905
Благодарил (а): 96 раз.
Поблагодарили: 27 раз.
Пункты репутации: 5
YTRE, qpAHToMAS
то что надо, будем пробовать

все предложенные методы для неизвестного многоугольнька, а для известного можно двухмерный массив создать
даст идеальную точность в отличии от вычислений, но это если картинка небольшая
или создать карту, в качестве ключей координаты, вот так 123x24, карта без данных!!!, только ключи, искать так
*Result = FindMapElement(Map(), Key$)
карта без данных создаётся значительно быстрей чем с данными и памяти требует меньше чем с данными
так что трудно сказать что будет лучше, массив, карта или вычисления
у меня восьмилучевая звезда, нужно отловить нахождение на луче, центр игнориЦа
картинка 143х143 пикселя


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 22, 2019 2:14 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 377
Благодарил (а): 1 раз.
Поблагодарили: 17 раз.
Пункты репутации: 0
Я делал ещё и так.
Похожий пример где-то вылаживал, не помню уже где.
Создавал картинку аналогичного размера.
Она нигде не отражается.
Каждую форму рисовал своим цветом.
Наводим вышей.
Узнаем координаты.
Считываем цвет.
По коду цвета получаем номер фигуры в таблице соответствия каждой форме.
Можно получать данные с очень сложных фигур, кода требует мизер, без формул и заумных текстов

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт авг 23, 2019 3:37 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 905
Благодарил (а): 96 раз.
Поблагодарили: 27 раз.
Пункты репутации: 5
для не очень больших фиксированных картинок вполне подходит, подобным способом на картинках для обоев углы скруглял, они не просто круглые, а разной формы
а тут сдури в дебри полез

но вопрос есть ли это в апи остался, в теории должно быть, только как оно называется


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 28, 2019 5:25 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 377
Благодарил (а): 1 раз.
Поблагодарили: 17 раз.
Пункты репутации: 0
Возможно в полигонах и регионах что-то есть. По крайней мере там можно нарисовать бублик и обрабатывать как обычное окно. В дырку бублика клацаеш, а попадаеш не на свое окно, а на то ,что в отверстии.

Вот несколько команд
Arc
Ellipse
Pie
Polygon
Или работа с регионами
PtInRgn
FillRgn
CreatePlygonRgn

На форуме если поискать то где-то я видел кто-то ковырялся с ними.

Для отображения на окне используется контекст устройства, его берут из стартДравинг().
Можно прямо на дисплей нарисовать,

H=CreateDC_("DISPLAY", 0,0,0)
Ellips_(h, 12,111,155,155)
DeleteDC_(H)
Этого достаточно чтобы отобразило Элипс на рабочем столе, а если чтобы работать как с окном нужно углублятьс. Но проги на пурике точно есть

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 28, 2019 5:30 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 377
Благодарил (а): 1 раз.
Поблагодарили: 17 раз.
Пункты репутации: 0
К стати вот поднятая тема на рисование аналогичными методами, может поможет разобраться
viewtopic.php?f=1&t=3441

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 29, 2019 7:23 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 905
Благодарил (а): 96 раз.
Поблагодарили: 27 раз.
Пункты репутации: 5
уже всё работает как надо
карту переделал по твоей идее, ещё проще получилось и работает как надо, есть наезд на нужную область, курсор меняется, и по клику картинка меняется


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 29, 2019 9:37 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 924
Благодарил (а): 2 раз.
Поблагодарили: 45 раз.
Пункты репутации: 9
newJS писал(а):
уже всё работает как надо
карту переделал по твоей идее, ещё проще получилось и работает как надо, есть наезд на нужную область, курсор меняется, и по клику картинка меняется

В смысле с регионами сделал?
Там вроде бы картинка при вставки в них сжимается.
да и отслеживаются они. :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 29, 2019 10:34 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11573
Благодарил (а): 4 раз.
Поблагодарили: 479 раз.
Если производится рисование на канвасе используя VectorDrawing, задача не очень сложная. viewtopic.php?p=81557#p81557

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт авг 30, 2019 6:27 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 905
Благодарил (а): 96 раз.
Поблагодарили: 27 раз.
Пункты репутации: 5
Пётр, поздно, задолбался переделывать :D , да и картинка у меня, как оно с картинкой будет ещё вопрос

Сергейчик писал(а):
В смысле с регионами сделал?

как ниже balex1978 сказал, так и сделал, ещё раз повторюсь, это хорошо для небольших картинок
Серёга, а об одном ли мы с тобой говорим?
картинка восемь стрелок, при наезде на стрелку меняется курсор на руку и можно кликнуть, после клика картинка поменяется с нужной выделенной стрелкой, срабатывает только на стрелках, всё остальное игнориЦа, также игнориЦа наезд и клик на активной стрелке
Изображение


Вложения:
arr_cr.png [7.78 KiB]
Скачиваний: 0
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB