Перейти к содержанию
Fire Monkey от А до Я
  • 0

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


Legioner

Вопрос

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

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

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

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

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

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

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

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