Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мелькание картинки при обновлении


И. Павел ©   (2006-05-23 22:30:00) 

Здравствуйте. В программе нужно вывести изображение, которое с определённой скоростью будет двигаться по экрану. Я пытался сделать это через канву и просто меняя left и top для image. При большой скорости перерисовки изображение начинает мелькать. Посоветуйте, пожалуйста, как можно это избежать.


И. Павел   (2006-05-25 22:35:00) [1]

Заработало! Использование двух канв помогло, картинка теперь не мелькает. Огромное спасибо.


Loginov Dmitry   (2006-05-24 09:39:00) [2]

Turbid ©   (24.05.06 1:37) [5]
Создай еще одну канву, например компонент PaintBox, рисуй на нем, а на основной копируй.


Думаю, что имелось ввиду рисовать на канве TBitmap, а затем копировать на Image примерно так:
Image.Canvas.Draw(0, 0, Bitmap);


Turbid   (2006-05-24 01:37:00) [3]

Самый простой вариант - используй двойную буфризацию, как подсказал Virgo_Style:

Создай еще одну канву, например компонент PaintBox, рисуй на нем, а на основной копируй.

Как вариант еще можно синхронизовать с вертикальной разверткой, но это сложней...


И. Павел   (2006-05-23 23:30:00) [4]

Да, в обработчике OnTimer я просто изменяю координаты изображения и вызываю метод Refresh.


Loginov Dmitry   (2006-05-23 22:57:00) [5]

И. Павел   (23.05.06 22:30)
просто меняя left и top для image. При большой скорости перерисовки изображение начинает мелькать.


А что, вы сами его перерисовываете?


Virgo_Style   (2006-05-23 22:53:00) [6]

попробуйте DoubleBuffered


Gydvin   (2006-05-23 22:35:00) [7]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1147794206&n=18


Наверх

Титульная страница Поиск, карта сайта Написать письмо