Вниз
Скачать: CL | DM;

Мелькание картинки при обновлении   Найти похожие ветки 

← →
И. Павел   (2006-05-23 22:30) [0]

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


← →
Gydvin ©   (2006-05-23 22:35) [1]

http://delphimaster.net/view/2-1147794206/


← →
Virgo_Style ©   (2006-05-23 22:53) [2]

попробуйте DoubleBuffered


← →
Loginov Dmitry ©   (2006-05-23 22:57) [3]

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


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


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

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


← →
Turbid ©   (2006-05-24 01:37) [5]

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

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

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


← →
Loginov Dmitry ©   (2006-05-24 09:39) [6]

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


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


← →
И. Павел   (2006-05-25 22:35) [7]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
11-1127931560
Kozz
2005-09-28 22:19
2006.06.11
Почему Thread1 останавливается ?


2-1148458237
TSa
2006-05-24 12:10
2006.06.11
Работа с SQlite


2-1148557809
tvv
2006-05-25 15:50
2006.06.11
Работа с DLL


2-1148676758
ZV
2006-05-27 00:52
2006.06.11
SpinEdit


2-1148724673
Id
2006-05-27 14:11
2006.06.11
Параметр "Вычислить как..."




   Наверх