![]() |
|
![]() ![]() ![]() |
|
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Привет.
Хочу узнать как можно сделать так, чтобы при наведении на компонент Image картинка менялась на другую, а потом обратно? Спасибо. Это сообщение отредактировал(а) artsb - 17.7.2007, 20:17 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
SkyHawk |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 17.8.2006 Где: г. Новосибирск Репутация: 1 Всего: 2 |
Событие OnMouseMove, обработка координатов курсора и немного смекалки.
![]() Это сообщение отредактировал(а) SkyHawk - 18.7.2007, 06:53 --------------------
Быть может все, что может быть, И даже то, что быть не может. |
|||
|
||||
Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: 0 Всего: 1 |
а по моему обработка координат тут совсем удобна. Я так понимаю что тут достаточно OnMouseMove.
просто словами: <наводим курсор(OnMouseMove)> { загружаем в Image1 нужную картинку; а тут можно Sleep (500); поставить ну или скок нада; а иначе просто тут придёться голову поломать загружаем в Image1 бывшую картинку; } покопаюсь у себя сразу напишу.. Это сообщение отредактировал(а) Santilka85 - 18.7.2007, 07:45 --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Ну как менять при наведении я разобрался, а вот обратно - проблема :(
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: 0 Всего: 1 |
а мой пример тебе не подходит? ну в смысле когда
1. наводишь на картинку. 2. она меняется. 3. отсчитывается к примеру 0.1 сек. 4. загрузить предыдущую картинку. или ты картинки хочешь в EXE-файле хранить потом? Добавлено @ 10:45 напиши хоть часть кода ![]() Это сообщение отредактировал(а) Santilka85 - 18.7.2007, 10:45 --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
HappyLife |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
artsb, Отслеживать координаты Мышки.
|
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
OnMouseEnter, OnMouseLeave. И не надо ничего отслеживать
![]() Кадры анимации нужно хранить в ImageList затем при перерисовке ImageList->Draw(Canvas, x,y, №кадра); |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
При наведении курсора сначала приложение замрет на 0,5с а затем появится "бывшая картинка", "нужную картинку" юзверь не увидит так как в место перерисовки GUIшный поток будет крепко спать ![]() Это сообщение отредактировал(а) Lazin - 18.7.2007, 15:21 |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Пра-а-а-а-вда? ![]() |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
А разве у Image есть событие OnMouseLeave. Если нет напишите как отслеживать координаты.
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
![]() Вообще, есть два варианта. Первый - поместить, скажем, TImage поверх всех контролов на форме (естественно, картинку в него загружать не надо, чтобы он остался прозрачным). И отслеживать его событие OnMouseMove, анализируя передаваемые туда параметры X и Y и соотнося их с позициями других компонентов на форме. Метод не совсем удобный, поэтому предлагаю другой. Второй метод - переопределить метод AppMsg и отслеживать перемещение мыши в нем путем анализа события WM_MOUSEMOVE. Как перегрузить этот метод - обсуждалось много раз, поищи. |
|||
|
||||
Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: 0 Всего: 1 |
--------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
Lazin |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
BDS2006 Help
У пэйнт бокса например есть, и у кнопки тоже. TImage не использую т.к. имхо компонент кривой, и предназначен в основном для отображения статических изображений.
а если свой компонент написать? А вообще с таймером нормально должно работать. Можно так-же со Sleep, только перед ним нужно вызвать Image->Repaint() но это плохой вариант так как засыпать будет основной поток, т.е. каждый раз когда пользователь наводит курсор прога будет останавливаться (сообщения не будет обрабатывать). PS щас как посмотрел на этот TImage, и оказалось что у него тоже есть события OnMouseEnter & OnMouseLeave ![]() Это сообщение отредактировал(а) Lazin - 19.7.2007, 07:51 |
||||||
|
|||||||
Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: 0 Всего: 1 |
ну тада чё морочиться???? ипсользовать Timer и ВСЁ!!
![]() --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
нафига таймер если события есть?
|
|||
|
||||
Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: 0 Всего: 1 |
ну ладно картинку ты изменишь при наведении, а обратно то КАК? извини конечно, я, может чего то недопонял ![]() --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
cобытие OnMouseLeave
|
|||
|
||||
Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: 0 Всего: 1 |
в справке не нашёл, а как оно работает, когда выполняется? ![]() --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
А на чём пишешь? У меня BDS2006, там эти события есть, в 6-м я их не нашёл.
Как вариант: можно обрабатывать событие OnMouseMove у Image-а и у формы(панели) на которой он лежит. При движении указателя мыша по имагу устанавливать одно изображение, а при движении по форме возвращать старое:
|
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Вот пример добавления этих событий для RichEdit. Переделать легко.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
SerK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 31.3.2007 Репутация: нет Всего: нет |
Доброй ночи!
Для себя я решил эту проблему так:
Что самое главное, так это то, что нет мигания изображения. Мне эта функция помогает для создания своих кнопок и выведения оригинальных изображений на них. Наверное, эту функцию можно еще оптимизировать, но пока до этого еще не дошли руки. -------------------- Пусть будет миру хорошо! |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: нет Всего: 12 |
Извиняюсь за код но в C++ пока неочень так что могу предложить вареант на Delphi это новый компонент созданный на основе TImage но с нужными событиями:
|
|||
|
||||
xKOCMOCx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Что за функции мудрёные, что вы глумитесь, функция Image1MouseMove: загружаем новую картинку, функция FormMouseMove: загружаем старую картинку! |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
xKOCMOCx, вообще, ваш вариант не совсем правильный.
Не всегда за пределами этого изображения будет находиться именно форма. А еще более сложный вариант - если изображение окружено несколькими другими объектами. Тогда придется прописывать перезагрузку картинки для каждого OnMouseMove на каждом из этих контролов. Чего огород-то городить?! Плюс представьте, что мы сделаем загрузку картинки по ImageMouseMove. Что тогда? При ДВИЖЕНИИ МЫШИ по этому изображению картинка будет постоянно перезагружаться! Можно, конечно, это искусственно обойти, но вместе с вышесказанным это будет вообще сверхтяжелый код. И очень нерациональный, имхо. Это сообщение отредактировал(а) mr.Anderson - 5.8.2007, 16:50 |
|||
|
||||
Uraxa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
насколько я вкупил речь идет о нескольких версиях bcb. а помоему таймер нах. Лучшеиспользовать локальную переменную
также возможно я наврал с тру и фалос, не очень помню как там фф bool но надеюсь моё предложение поятно. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |