![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мерцание и Двойная Буферизация [D7, WinXP]
Паша555 © (2005-01-11 01:53:00)Помогите решить проблему.
На форме по таймеру происходит перемещение TLabel.
Без Двойной Буферизации - мерцание
При включении - недостаточная скорость перемещения метки....
При добавлении графики (TImage)на форму - еще более уменьшается скорость передвижения слова.....
Какими путями можно избежать всех вышеописанных минусов ?
(OpenGL или DirectX?????)
Заранее спасибо !
Паша555 (2005-01-13 00:32:00) [21]Неужели никто не может посоветовать как правильно сделать ?
Паша555 (2005-01-12 12:10:00) [22]С буфером - это 1 способ ?
И можно ли обеспечить скорость движения слова (примерно прохождение 1000 пикселей за 2 секунды с однопиксельной итерацией)?
Кстати, спасибо огромное !
Поручик (2005-01-12 12:02:00) [23]Из этих двух способов быстрее с буфером, но если картинка у тебя меньше 500х500, то разницы не заметно.
И еще маленький совет: Рисуй сначало все на TBitmap, и только потом выводи на экран, так быстрее.
Паша555 (2005-01-12 11:59:00) [24]Извините за назойливость,
но как будет быстрее к точки зрения прорисовки ? (см назв. темы)
И если можно - поподробнее....
Поручик (2005-01-12 11:56:00) [25]Тогда надо сохранять часть картинки с надписью в буфур (заведи еще один TBitmap)
Действия такие:
Скопировал участок, где надпись должна быть
Нарисовал надпись
Восстановил участок
Скопировал новый участок
Нарисовал новую надпись
...
Если с этим возиться неохото, то просто перерисовывай заново картинку, а на нее надпись клади
Паша555 (2005-01-12 11:49:00) [26]Спасибо, поручик, но это не совсем то..... или я не допираю....
Надо чтобы текст с прозрачным фоном двигался по картинке....
А эта функция заливает все белым....
Поручик (2005-01-12 11:37:00) [27]PatBlt(Form1.Canvas.Handle, 0, 0, Form1.ClientWidth, Form1.ClientHeight, WHITENESS);
Паша555 (2005-01-12 11:25:00) [28]Понимаете, если я заливаю прямоугольник кистью с прозрачнм фоноом, это не нпомогает - предыдущее слово остается.....
megabyte-ceercop (2005-01-12 07:27:00) [29]Canvas.FillRect()
заливка прямоугольника. (название процедуры возможно не совсем точное). Пользуйся toolip`ами.
Паша555 (2005-01-11 23:04:00) [30]И снова спасибо, хотя я балбес должен был сам мозгами пошевелить :)
НО вот уже час мучаюсь с проблемой:
ПРи попытке двигать текст по канвасу с помощью координат canvas.TextOut старый текст остается и смазывается к новым.
Думаю надо перед выводом текста с новыми координатами убирать старый путем заливки канваса прозрачным фоном - но как - не доходит......
Jel (2005-01-11 20:26:00) [31]Canvas.Font
Паша555 (2005-01-11 20:13:00) [32]Спасибо большое за ответ, но возник еще один вопрос
при использовании canvas.TextOut как можно изменять размер, цвет, шрифт и т.д. ???
Спасибо !
Поручик (2005-01-11 02:53:00) [33]Если нужна надпись, рисуй ее с помощью canvas.TextOut(), если картинка, то с помощью canvas.draw() смотри про них в справке.Ни в коем случае не двигай image это ТОРМОЗА, а про OGL и DX пока забудь.
Удачи.