Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2012, 23:36   #1
Стьюдент
Пользователь
 
Регистрация: 19.10.2011
Сообщений: 10
Сообщение Подсвечивание участка изображения

Есть файл-изображение (допустим изображение карты мира). Необходимо подсвечивать определенный участок изображения (какой нибудь материк, например северную америку) при наведении курсора. Подскажи пожалуйста как это реализовать.

Последний раз редактировалось Стьюдент; 07.10.2012 в 23:52. Причина: Не корректно назвал заголовок
Стьюдент вне форума Ответить с цитированием
Старый 07.10.2012, 23:50   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Режете картинку на кусочи(нужные вам части), и узнаете о компоненте TShape по больше.
Человек_Борща вне форума Ответить с цитированием
Старый 08.10.2012, 03:59   #3
Стьюдент
Пользователь
 
Регистрация: 19.10.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Режете картинку на кусочи(нужные вам части), и узнаете о компоненте TShape по больше.
Спасибо! Со всем разобрался, кроме того как сделать произвольную форму Shape ну или хотя бы менять угол поворота, а то наложения Shape на Shape получаются(когда два куска изображения рядом находятся) и вид уже не тот.
Стьюдент вне форума Ответить с цитированием
Старый 08.10.2012, 09:56   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Можно применить вполне обычный метод. Только под него картинки надо особым образом подготовить. Надо иметь чёткие полностью одноцветные области на картинке, обязательно разных цветов, можно изменить на 1 RGB, чтобы визуально были одинаковые цвета, а фактически разные. Ну и иметь картинки подсветки, с точными координатами куда их накладывать на осн картинке (если они меньше основной), либо сделать чтобы картинка подсветки была одна просто на прозрачной/фоновой части основной картинки(остальные "континенты" как бы удалены), тогда можно обойтись без координат.
Распишу сразу с двойной буфферизацией. В таймере рисуем в буферный Битмап основную картинку, и смотрим в canvas.pixels основной картинки, передавая туда координаты мыши (которые надо запоминать в событии OnMouseMove формы) , получаем цвет и по некоей таблице/массиву цветов (которую опять же заготовить надо) определяем какая это область/фигура (по номеру или типа того) и выводим её (либо по координатам, либо сразу поверх основной) на буфер. Буфер в конце таймера рисуем на форму.

Если не ясен порядок действий, можете скинуть сюда пачку подготовленных картинок ( например картинка -белый фон и 2 одноцветные фигуры на нём, плюс 2 картинки с этими фигурами, типа подсвеченые) и я набросаю примерчик.

Плюсы этого подхода - можно сделать произвольную область. Минусы - ограниченность по одноцветности. Этот минус можно ослабить, если каждая фигура содержит набор неких цветов, которые нигде больше не задействованы в других фигурах, тогда просто посложнее будет составить массив соответствий цветов и номеров фигур. При определённом усердии, можно практически свести минус на нет, но проблемы по проверке цветов будут постоянно стоять при необходимости любых изменений в наборах графики.
phomm вне форума Ответить с цитированием
Старый 08.10.2012, 17:44   #5
ivanshal86
Новичок
Джуниор
 
Регистрация: 07.10.2012
Сообщений: 1
По умолчанию

Да согласен с мнением порежте ее на кусочки
ivanshal86 вне форума Ответить с цитированием
Старый 09.10.2012, 19:39   #6
Стьюдент
Пользователь
 
Регистрация: 19.10.2011
Сообщений: 10
По умолчанию

Этот ответ оказался проще для меня... Спасибо за помощь.
Стьюдент вне форума Ответить с цитированием
Старый 09.10.2012, 23:37   #7
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Немного повторю идею phomm-а.
Я думаю, что можно увеличить каждое значение этой области на какую-нибудь величину (Свойство TCanvas.Pixels)
Но рисовать лучше на каком-нибудь буфере, а потом выводить уже на канву. Хотя при использовании двойного буфера, я думаю, что это делается по умолчанию.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с изображением vladislav_m Общие вопросы Delphi 4 07.04.2012 11:02
Работа с изображением SaimaN Помощь студентам 0 08.04.2011 14:55
работа с изображением Андрей.12 Фриланс 5 05.05.2010 19:55
работа с изображением Fellot PHP 0 23.05.2009 17:15
Работа с изображением za4ot Мультимедиа в Delphi 16 08.04.2008 22:27