| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Замена изображения |
| Автор: dilik 13.5.2006, 08:13 |
| Подскажите пожалуйста как сымитировать нажатие кнопки. Т.е. У меня есть два изображения - два положения "кнопки" - обычное состояние и нажатое (вдавленное). Как сделать так, чтобы при нажатии и удерживании лев.клав.мыши на первое изображение оно заменилось вторым и вернулось опять к первому при отпускании клавиши. Я не совсем понимаю в Delphi, но мне кажется надо использовать OnMouseDown и OnMouseUp. ПОЖАЛУЙСТА! СРОЧНО! |
| Автор: MaXL 13.5.2006, 08:22 | ||
Ну скорее всего по наступления одного события меняешь картинку(например OnMouseDown - меняешь на вдавленныю картинку, а на OnMouseUp на обычную).
Вот так делаешь. |
| Автор: Alexeis 16.5.2006, 12:32 | ||
dilik, совершенно верно по OnMouseDown рисовать одно изображение по OnMouseUp другое, вот только хранить их лучше в объекте класса TImageList, тогда грузится они будут из памяти а не из файла. При запуске программы загружаем все изображения в TImageList, а в нужный момент их получаем примерно так
Добавлено @ 12:35 MaXL, представь себе скорость перерисовки если изображение будет каждый раз грузится из файла |
| Автор: drkot 16.5.2006, 13:15 | ||
alexeis1, Ваш способ тоже не быстр.
скорость поболе будет + возможность наложения эффектов |
| Автор: Alexeis 16.5.2006, 13:43 |
| drkot, может быть можно и ускорить раза в два, но для такой операции это уже не критично, кроме того, я его уже опробовал его в именно такой задаче. Так можно и до APi дойти, напимер заменить TCanvas.copy(); на patblt. ImageList - удобен тем что грузит изображения одного размера и является "родным" для VCL. Если вы имели ввиду таким образом работать с TImageList, то поясните подробнее. |
| Автор: dilik 19.5.2006, 16:48 |
| Спасибо всем, с этой проблемой я уже разобрался. Воспользовался советом MaXL, у меня картинки 10х10, так что никаких проблем не вижу. Еще раз всем спасибо |