Панорама, Как сделать панораму? |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Панорама, Как сделать панораму? |
Alx |
Сообщение
#1
|
Гость |
Люди, подскажите пожалуйста. Мне необходимо сделать панораму. Длинная кортинка, которая едет по форме. Но когда я двигаю компонент Image по форме image.left:=image.left+1 картинка как будто мерцает и на какоето время пропадает. Мне сказали что так сделать не получится. А как же тогда мне сделать панораму? Заранее спасибо! Alx
|
Бродяжник |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: 3 |
procedure TForm1.Timer1Timer(Sender: TObject); Так, конечно, будет мерцать. Потому что Вы сначала делаете repaint, то есть побуждаете форму перерисоваться, и сразу же после этого вручную на нее накладываете битмап. А вообще нужно так, как было у Паши, потому что если Вы сделаете отрисовку в таймере, а не в OnPaint, тогда при сворачивании, перекрывании и другими манипуляциями с Вашим окном, система будет слать ему WM_PAINT, и перерисовка формы будет перебивать отрисовку в таймере. Наверное, по этому поводу можно где-то прочесть лучше, чем я пишу, но все же попробую объяснить. Когда мы рисуем через Canvas.CopyRect и другие методы канвы, это, так сказать, наше личное дело. Мы чегой-то нарисовали, и окно не обязано об этом помнить. Если после нашего рисования окно было временно перекрыто другим, то после этого на месте нашего рисования останется область, залитая фоновым цветом окна. Восстанавливая свой вид, окно нарисовало лишь то, о чем ему было известно: свой фон, рамку, заголовок и подчиненные контролы. А вся наша графика улетучилась. Чтобы этого избежать, всю подобную графику принято помещать в обработчик события OnPaint, каковое событие генерируется при перерисовке окна. В этом случае при каждой перерисовке окна программа будет рисовать и наши художества. А для того, чтобы заставить окно принудительно перерисоваться, и используются repaint и invalidaterect. Неплохо бы Вам попробовать немного без VCL попрограммировать, с чистым API, так сказать... много узнаете интересного. |
Текстовая версия | 5.05.2024 18:54 |