Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Замена изображения


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


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

 smile  

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

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

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

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

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


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

Автор: drkot 16.5.2006, 13:15
alexeis1, Ваш способ тоже не быстр.

Код

TCanvas.copy();

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

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

Автор: dilik 19.5.2006, 16:48
Спасибо всем, с этой проблемой я уже разобрался. Воспользовался советом MaXL, у меня картинки 10х10, так что никаких проблем не вижу. Еще раз всем спасибо 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)