Useful
    
главная страница | гостевая книга 

       по сайту  в интернете

Рисование на Image без мерцания

Обновление окна включает в себя две фазы. В первой фазе, при выводе окна, Windows посылает ему сообщение "WM_ERASEBKGND", сообщающее о необходимости стирания фона перед процедурой рисования. Затем посылается сообщение "WM_PAINT", служащее сигналом для закрашивания "переднего плана".

Мерцание вызывает предворительное стирание фона, которое происходит при получении сообщения "WM_ERASEBKGND". Тем не менее, Вы можете избавиться от мерцания двумя способами: первый способ заключается в том, что Вы сами обрабатываете сообщение посланное системой; второй способ - это использование BitMap'ов т.е. все операции, которые нужно проделать с изображением, Вы выполняете на BitMap'е, а затем выводите его на Image, с помощью процедуры Draw().

Пример использования процедуры Draw():

procedure TForm1.Button1Click(Sender: TObject);
var
B : TBitMap;

begin
B := TBitMap.Create; //инициализация BitMap'а
{здесь Вы располагаете необхдимые операции}
image1.Canvas.Draw(0,0,B); //вывод BitMap'а на Image
end;

Рассмотрим подробнее первый способ. Для того чтобы обрабатывать сообщения получаемые системой добавте название процедуры обработки в раздел private объекта TForm. Соглашение по присвоению имен требует присваивать обработчику сообщений то же имя, что и имя обрабатываемого им сообщения, но без символа подчеркивания и с указанием первых знаков имени прописными буквами. Вот пример обявления процедуры, обрабатывающей сообщение "WM_ERASEBKGND":

procedure WMErasebkgnd(var msg:TWMErasebkgnd); message WM_ERASEBKGND;

Потом создайте описание для этой процедуры. Для того чтобы просто отключить перерисовку, в описании процедуры можно указать простой комментарий.

Назад
Главная страница
Гостевая книга
Интернет и сети
ОС и железо
Мультимедия
Файловая система
Компоненты
Базы данных
Советы мастеров
Разное







гостевая книга|главная страница|вверх
написать нам 

Хостинг от AGAVARambler's Top100



Хостинг от uCoz