![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Избежать мерцания при перемещении
DelphiLexx © (2005-09-21 16:53:00)У меня возникла задача суть которой состоит в следующем:
Нужно создать редактор в котором есть элементы(различные фигурки), которые можно размещать на форме, а также можно перемещать их. Я сделал так - на TPanel'ke размещаю компонент TImage в котором хранится рисунок. При движении по форме этот рисунок противно мерцает. Можно конечно использовать TForm и тогда на время перемещения будет отображаться только рамка вокруг рисунка, а мне как раз-то нужно так чтобы при перемещении постоянно отображалась картинка и не мерцала. Как это сделать (только не говорите, что ни как пример программа VisiPro, VisSim и т.п.)?
BFG9k (2005-09-23 13:43:00) [1]TUser: Внимательней надо читать (самый первый пост) :
> Можно конечно использовать TForm и тогда на время перемещения
> будет отображаться только рамка вокруг рисунка, а мне как
> раз-то нужно так чтобы при перемещении постоянно отображалась
> картинка и не мерцала.
Чтобы совсем избежать мерцанию нужно использовать TForm. Например, так делается в примерах по FastIMG.
Barloggg (2005-09-23 10:09:00) [2]Мерцания при отрисовке не избежать.
Но можно уменьшить.
При перемещении Image вместо последовательного изменения лефт и топ сразу задавать рект.
Но лучше всего создать задний буфер по размеру формы (тоже image) и рисовать все на него, и уже готовый выбрасывать на форму. В общем технология как ДиректХ
TUser (2005-09-22 22:49:00) [3]> BFG9k © (22.09.05 17:29) [2]
Там не форма перетаскивается.
BFG9k (2005-09-22 17:29:00) [4]Никто не мешает тебе сделать так, чтобы содержимое формы отображалось при перетаскивании :
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,1,nil,SPIF_SENDCHANGE);
Не забудь только вернуть на место - это распространяется на всю систему.
PAVIA (2005-09-21 21:04:00) [5]Понимаешь ли- этот вопрос в день задоют несколько человек. Поэтому становиться влом отвичать.
1. DoubleBuffered:=true;
2. Лучше не использовать image, а использовать в цикле/таймере Canvas.Draw или BitBlt ее оналог на WinAPI.