Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Как ускорить перерисовку   Найти похожие ветки 

 
ARTEMKA   (2003-10-25 21:10) [0]

Мастера я в проге перехватываю собитие WM_PAINT в обработчике рисую
ps:TPaintStruct;
dc:HDC;
begin
x:=ClientWidth;
y:=ClientHeight;

dc:=BeginPaint(Handle,ps);
PatBlt(dc,0,0,x,y,BLACKNESS);

for i:=1 to ((x-510)div 60)+1 do
begin
BitBlt(dc,50+i*60,0,60,59,btm[2].canvas.Handle,0,0,SRCCOPY);
end;
for i:=1 to ((x-574)div 60)+1 do
begin
BitBlt(dc,134+i*60,y-72,60,50,btm[7].canvas.Handle, 0,0,SRCCOPY);
end;
for i:=1 to ((y-385)div 60)+1 do
begin
BitBlt(dc,22,130+i*60,59,60,btm[4].canvas.Handle, 0,0,SRCCOPY);
end;
EndPaint(Handle,ps);
inherited;

но при изменении размеров формы, всё это так мерцает, что не приятно становится, можно ли сделать так чтоб прорисовка всего этого была не видна. Может я что не правильно делаю. Спасибо


 
ARTEMKA   (2003-10-25 22:01) [1]

Подскажите плз мастера


 
wicked ©   (2003-10-25 23:04) [2]

убери это:
> PatBlt(dc,0,0,x,y,BLACKNESS);

а вообще лучше рисуй тогда в TBitmap в памяти...


 
ARTEMKA   (2003-10-26 00:22) [3]

значит метод BeginPaint не осушествляет рисование в памяти а потом на канве, после Endpaint да?


 
sniknik ©   (2003-10-26 00:46) [4]

DoubleBuffered:= true; не помогает?


 
ARTEMKA   (2003-10-26 02:29) [5]

>>sniknik
а как этим пользоваться объясни плз


 
sniknik ©   (2003-10-26 02:35) [6]

procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:= true;
end;

уменьшает мерцание и одновременно жрет больше ресурсов (предварительная прорисовка формы в памяти), на некоторые компоненты не действует (в хелпе только TRichEdit упомянут).


 
Chlavik ©   (2003-10-26 02:03) [7]

Просто посмотри исходник VCl на щёт TwinControl.DoubleBuffered и всё станет ясно, я тоже этим страдаю...


 
miek ©   (2003-10-26 10:23) [8]

Перехватить событие WM_ERASEBKGND. Оч. сильно помогает иногда.



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

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
1-41578
kanych
2003-11-04 03:40
2003.11.13
Коллекции автоматизации.


1-41381
Denis
2003-10-30 11:53
2003.11.13
Виртуальные и динамические методы


7-42184
Seldon
2003-09-04 17:23
2003.11.13
Alt+tab


1-41522
Typish
2003-10-28 11:16
2003.11.13
как закрыть форму из OnShow или OnActivate?


3-41091
Vick
2003-10-23 10:16
2003.11.13
TADODataSet.Sort := ....