Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.03.2011, 13:28
Аватар для koshelevdmitry
koshelevdmitry koshelevdmitry вне форума
Прохожий
 
Регистрация: 02.03.2011
Адрес: г. Санкт-Петербург
Сообщения: 15
Версия Delphi: Enterprise 7
Репутация: 10
По умолчанию Подсвечивание объектов в delphi

Добрый день!

У меня такая проблема:

1. есть изображение детали в jpg:


2. Надо, чтобы при наведении мыши на определённые зоны, они подсвечивались зелёным цветом:


В общем то и всё...только уже неделю по литературе ползаю и ничего толкового не могу найти...помогите пожалуйста!!! Заранее спасибо!!
Ответить с цитированием
  #2  
Старый 02.03.2011, 13:39
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Есть же стандартная функция закраски.

Кстати, вот тут одному типу делали прогу по закраске областей:
http://www.delphisources.ru/forum/sh...ad.php?t=15104
Ответить с цитированием
  #3  
Старый 02.03.2011, 14:18
Аватар для koshelevdmitry
koshelevdmitry koshelevdmitry вне форума
Прохожий
 
Регистрация: 02.03.2011
Адрес: г. Санкт-Петербург
Сообщения: 15
Версия Delphi: Enterprise 7
Репутация: 10
По умолчанию

CСпасибо конечно, но там описывается реализация через openpicturedialog, а у меня картинка изначальна должна быть прикреплена к форме.

P.s.: Признаюсь, я ещё плохо разбираюсь в программировании на delpi, ибо недавно только начал глубокое его изучение)
Ответить с цитированием
  #4  
Старый 02.03.2011, 17:25
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от koshelevdmitry
CСпасибо конечно, но там описывается реализация через openpicturedialog, а у меня картинка изначальна должна быть прикреплена к форме.

P.s.: Признаюсь, я ещё плохо разбираюсь в программировании на delpi, ибо недавно только начал глубокое его изучение)
Понятно...
Там загружется через опердиалог, но что мешает загрузить сразу?
Закидаешь имейдж, закидаешь туда картинку и компилишь проджект.
Ответить с цитированием
  #5  
Старый 02.03.2011, 23:47
Аватар для koshelevdmitry
koshelevdmitry koshelevdmitry вне форума
Прохожий
 
Регистрация: 02.03.2011
Адрес: г. Санкт-Петербург
Сообщения: 15
Версия Delphi: Enterprise 7
Репутация: 10
По умолчанию

Там прогу не скачать. Плюс ко всему мне надо области картинки подсвечивать, а не всю картинку....
Ответить с цитированием
  #6  
Старый 03.03.2011, 00:25
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Могу вот что предложить(полностью расписывать не буду спать охото уже)

Сделай маску этой каритнки, то есть одну область закрась(прям в Paint) одним цветом, одну другим.
Далее, исходя из этого в тот момент когда ты будешь водить курсором по картинке ты проверяй цвет пикселя на маске. и в зависимости от того какой цвет под курсором совершай какие-либо действия то есть закрашивание. Просто пробегаешься по всей маске и в цикле пишешь такое условие: Если mask.pixels[i,j]= mask.pixels[x,y] то PicBuff.pixels[i,j]:=clgreen иначе PicBuff.pixels[i,j]:=orig.pixels[i,j].
где x,y-координаты курсора, PicBuff-изображение которое ты будешь выводить, orig-исходное изображение. Вообще через pixels работать себя не уважать, лучше все таки через skinLine, но с ней нужно еще уметь работать, так что пока попробуй через pixels, чтобы понять сам способ.

В общем можно сделать все это по разному, но я думаю тебя это на что нибудь натолкнет
Ответить с цитированием
  #7  
Старый 03.03.2011, 00:52
Аватар для koshelevdmitry
koshelevdmitry koshelevdmitry вне форума
Прохожий
 
Регистрация: 02.03.2011
Адрес: г. Санкт-Петербург
Сообщения: 15
Версия Delphi: Enterprise 7
Репутация: 10
По умолчанию

Спасибо! Попробуем)

А какие-нить ещё варианты есть у кого? С удовольствием послушаю))) Заранее спасибо!

Последний раз редактировалось koshelevdmitry, 03.03.2011 в 00:59.
Ответить с цитированием
  #8  
Старый 03.03.2011, 05:56
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Если уж что-то заранее подготавливать, так я бы подготовил:
1 - "координаты областей", которые надо подсвечивать.
2 - по этим координатам создал бы регионы CreateRgn
3 - при прохождении мышки над Image проверял бы PointInRegion
4 - в случае успешного п3. просто рисовал бы регион, в который попал курсор в п3.
И работать будет шустрее и памяти всего на одну картинку надо
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #9  
Старый 05.03.2011, 16:17
Аватар для koshelevdmitry
koshelevdmitry koshelevdmitry вне форума
Прохожий
 
Регистрация: 02.03.2011
Адрес: г. Санкт-Петербург
Сообщения: 15
Версия Delphi: Enterprise 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pilot_Red
Могу вот что предложить(полностью расписывать не буду спать охото уже)

Сделай маску этой каритнки, то есть одну область закрась(прям в Paint) одним цветом, одну другим.
Далее, исходя из этого в тот момент когда ты будешь водить курсором по картинке ты проверяй цвет пикселя на маске. и в зависимости от того какой цвет под курсором совершай какие-либо действия то есть закрашивание. Просто пробегаешься по всей маске и в цикле пишешь такое условие: Если mask.pixels[i,j]= mask.pixels[x,y] то PicBuff.pixels[i,j]:=clgreen иначе PicBuff.pixels[i,j]:=orig.pixels[i,j].
где x,y-координаты курсора, PicBuff-изображение которое ты будешь выводить, orig-исходное изображение. Вообще через pixels работать себя не уважать, лучше все таки через skinLine, но с ней нужно еще уметь работать, так что пока попробуй через pixels, чтобы понять сам способ.

В общем можно сделать все это по разному, но я думаю тебя это на что нибудь натолкнет

А можно это расписать более подробно??? Как я уже говорил выше: "Я пока новичёк" - и ещё не очень хорошо ориентируюсь в Delphi.

Заранее спасибо!)
Ответить с цитированием
  #10  
Старый 05.03.2011, 16:21
Аватар для koshelevdmitry
koshelevdmitry koshelevdmitry вне форума
Прохожий
 
Регистрация: 02.03.2011
Адрес: г. Санкт-Петербург
Сообщения: 15
Версия Delphi: Enterprise 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Если уж что-то заранее подготавливать, так я бы подготовил:
1 - "координаты областей", которые надо подсвечивать.
2 - по этим координатам создал бы регионы CreateRgn
3 - при прохождении мышки над Image проверял бы PointInRegion
4 - в случае успешного п3. просто рисовал бы регион, в который попал курсор в п3.
И работать будет шустрее и памяти всего на одну картинку надо

А можно и это поподробнее??? Очень хочется узнать прогу поближе со всеми вариантами реализации)))

Заранее спасибо!!!)))
Ответить с цитированием
  #11  
Старый 05.03.2011, 17:05
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,553
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

В исходниках есть такой пример, к сожалению только не помню название, уж очень база разрослась
Если есть терпение, ищи (сверху и пошел вниз, так найдешь быстрее) в этой категории исходников: http://www.delphisources.ru/pages/so...rch-graph.html
Ответить с цитированием
  #12  
Старый 05.03.2011, 18:11
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Цитата:
Сообщение от koshelevdmitry
А можно и это поподробнее??? Очень хочется узнать прогу поближе со всеми вариантами реализации)))

Заранее спасибо!!!)))
Как-то так
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.

Последний раз редактировалось dr. F.I.N., 12.01.2012 в 17:09.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:23.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025