Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена изображения, Имитация нажатия кнопки 
:(
    Опции темы
dilik
  Дата 13.5.2006, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 9.5.2006
Где: CCCP

Репутация: нет
Всего: нет



Подскажите пожалуйста как сымитировать нажатие кнопки. Т.е. У меня есть два изображения - два положения "кнопки" - обычное состояние и нажатое (вдавленное). Как сделать так, чтобы при нажатии и удерживании лев.клав.мыши на первое изображение оно заменилось вторым и вернулось опять к первому при отпускании клавиши. 
Я не совсем понимаю в Delphi, но мне кажется надо использовать OnMouseDown и OnMouseUp.


ПОЖАЛУЙСТА! СРОЧНО!

 smile  
PM WWW ICQ   Вверх
MaXL
Дата 13.5.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



Ну скорее всего по наступления одного события меняешь картинку(например OnMouseDown - меняешь на вдавленныю картинку, а на OnMouseUp на обычную).
Код

Image1.Picture.Bitmap.LoadFromFile('путь к картинке в формуте bmp');//точно не помню но помойму так

Вот так делаешь.  

Это сообщение отредактировал(а) MaXL - 13.5.2006, 08:24


--------------------
MaXL
PM MAIL   Вверх
Alexeis
Дата 16.5.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



dilik, совершенно верно по  OnMouseDown рисовать одно изображение по OnMouseUp другое, вот только хранить их лучше в объекте класса TImageList, тогда грузится они будут из памяти а не из файла. При запуске программы загружаем все изображения в  TImageList, а в нужный момент их получаем примерно так
Код

ImageList1.GetBitmap(0,Image1.Picture.Bitmap);


Добавлено @ 12:35 
MaXL, представь себе скорость перерисовки если изображение будет каждый раз грузится из файла smile  


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
drkot
Дата 16.5.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



alexeis1, Ваш способ тоже не быстр.

Код

TCanvas.copy();

скорость поболе будет + возможность наложения эффектов 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Alexeis
Дата 16.5.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



drkot, может быть можно и ускорить раза в два, но для такой операции это уже не критично, кроме того, я его уже опробовал его в именно такой задаче. Так можно и до APi дойти, напимер заменить 
TCanvas.copy(); на patblt. smile 
ImageList - удобен тем что грузит изображения одного размера и является "родным" для VCL. Если вы имели ввиду таким образом работать с TImageList, то поясните подробнее. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
dilik
Дата 19.5.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 9.5.2006
Где: CCCP

Репутация: нет
Всего: нет



Спасибо всем, с этой проблемой я уже разобрался. Воспользовался советом MaXL, у меня картинки 10х10, так что никаких проблем не вижу. Еще раз всем спасибо 
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.