| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > onmousemove |
| Автор: darkida 27.1.2010, 15:19 |
| Как избавиться от мигания при использовании onmousemove? Или какая есть этому альтернатива? Ну вот к примеру я хочу создать кнопку, ставлю изображение и на каждое действие изменяю её на другое. На onmousemove, onclick, onup, ondown. Так если мышкой водить по этому изображению начинают идти полосы. Как быть? |
| Автор: darkida 27.1.2010, 15:53 |
| Блин, хотя может быть это потому что использую Delphi 6, не помню сейчас как работало на 7. Проверьте пожалуйста. Ну а если же на последних версиях такая же баида. То хорошо было бы менять картинки используя IF. К примеру: если курсор мышы находиться в таком то квадрате то такое то изображение иначе другое. |
| Автор: darkida 27.1.2010, 17:17 |
| Ой, да перло. Можно с viseble играть, но вот тока почему то не работает. Почему? Что не так? Или надо что то дополнительно прописывать вот к этому: image1.Visible:=true; Хотя тоже не уверен в том что поможет. Ведь она будет выполняться ровно столько же сколько мы будем двигать мышью. Помогите народ... Неужто у всех все нормально с этим. |
| Автор: darkida 27.1.2010, 21:12 | ||
Нашел вот это. Но воспользоваться никак не смог. Походу для них еще обработчик надо писать. Я запарился ждать разумный вариант. И сделал пока так чтоб глаза не резала. Создал shape и на него событие onmove и на image загружаю картинку на этот shape наложил еще один shape чуть меньше размером опять onmove и на тот же image другую картинку, а потом тока сам image опять же меньший размером предыдущих shapov. Вот такую вот глупость пришлось делать, и если умных ответов не будет, то может кому-нибудь то поможет. |
| Автор: ~FoX~ 27.1.2010, 21:22 | ||||
| darkida, Ух, какая активность... Мигание происходит потому что при каждом движении ты свою картинку подгружаешь, рисуешь или чего ты там с ней делаешь... работа с графикой вообще процесс напряжный, для ВЦЛ-я. Заведи специальный флажок булевый глобальный, при событии онмаусмув проверяй его состояние и если он, допустим истеный, то меня картинку и ставь его в ложь..
А при остальных событиях
|
| Автор: darkida 27.1.2010, 23:12 | ||||
| О дождался. А то как чокнутый сам спрашиваю. И сам себе отвечаю и сам идеи себе талкаю. Но это я потому что память плохая и с блокнотами проблема и комп люблю форматировать. Мда точно что-то не подумал. С флажками то. )) Пусть гооглик будет всегда здоровым. ))) Вот нашел ещё методы, испробовал - рабочие. Выложу чтоб другие не тратили на поиски свое время. И мне легче было потом найти.
а потом присваиваем их:
Хотя можно было тока часть скинуть и так понятно. Ну ладно. http://parsers.info/2009/12/sender-sozdayom-svoj-stil-knopok/ 2 метод B:Bool; //Объявите B где-нибудь после implementation В FormCreate включите следующее B:=True; SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 0, @B, SPIF_SENDCHANGE) тоже помогает. Так что методы есть. АЖ целых 3. Хотя на vingrade не находил. Спасибо FOX. Сейчас проверю. |
| Автор: darkida 27.1.2010, 23:27 |
| Вот ещё один вопрос, ну даже не вопрос а просьба. Скиньте кодинг как можно checkbox заменить image' ами. Что то не получается? Думаю что image надо присваивать TAG и считать клики? А как правильно не знаю. Помогите? |
| Автор: ~FoX~ 28.1.2010, 13:00 |
| darkida, Одна тема - один вопрос! Тебе галочки нужно заменить картинками или что? |
| Автор: darkida 28.1.2010, 13:19 | ||
Ну да. Так же две картинки. одна с галочкой другая без нее. И при клике менялись.
Я думаю из-за такого вопроса не стоит создавать тему. Напиши пожалуйста код FOX. Заранее благодарен. |
| Автор: eXtr0gen 2.2.2010, 21:14 |
| Так же рекомендую поставить флаг DoubleBuffered в значение True. Тоже повышает скорость отрисовки. + более тщательно проработай процедуру перерисовки. Очень часто некоторые функции можно вынести за пределы цикла... |
| Автор: darkida 3.2.2010, 07:41 |
| Да DoubleBuffered помогает. Но страшно жрет ресурсы. Если много картинок то потом начинает подвисать все. |