Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизКак ускорить перерисовку Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.024 c