• 0
Legioner

Компонент нестандартной формы

Вопросы

Сразу скажу, с такой задачей сталкиваюсь впервые, поэтому даже не представляю куда гуглить. Подскажите направление, а дальше сам.
Собственно задача:
Например, на форме изображена схематично квартира с комнатами нестандартных форм (треугольник с одной выпуклой стороной, полукруг и т.д.), необходимо, чтобы при клике на ту или иную комнату происходила процедура (не важно какая, пусть будет подсвечивание выделенной комнаты). Какие компоненты можно использовать для таких целей? Если бы у комнат были стандартные формы (квадрат, прямоугольник), то я бы просто помещал к примеру TPanel на форму и не парился.
Главное найти решение описанной задачи, а дальше я уже сам, но для любителей задач поинтереснее:
Пользователь должен иметь возможность рисования этих форм самостоятельно. Т.е. вставил на форму любую схему и поочередно обвел необходимые объекты.

Сразу извините, если для кого-то вопрос покажется глупым, но повторюсь: я с таким никогда не сталкивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 ответа на этот вопрос

  • 0

В одном из продуктов Embarcadero - Beacons. Они используют следующий подход:

  1. Загружают картинку с планом помещений
  2. В специальной программе помечают регионы помещений. По сути это данные на основании которых будет определяться помещение.
  3. Программно по указанной координате можно проверить вхождение точки в один из указанных регионов. Алгоритмов, как это сделать в принципе много. Типичный алгоритм:  это обход ближайшего контура с правой стороны. Если при обходе по кривой вы все время находитесь с права от нее и в конечном итоге пришли в исходную точку, то значит вы находитесь в это регионе. Гуглить можно по теме Выпуклые оболочки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Можно облегчить себе задачу и использовать TPathData из FMX. Формируете TPathData кривой одну из комнат. Затем конвертируете TPathData в набор отрезков по контуру TPathData.FlattenToPolygon. А затем решаете на этом наборе точек задачу проверки вхождения точки в область.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

У TMS есть компонент с похожим функционалом - TTMSFMXHotSpotImage.

На картинку накладываются произвольные регионы с возможностью обработки событий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу