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

Вниз

Про перерисовку окна   Найти похожие ветки 

 
ARTEMKA   (2003-10-24 14:30) [0]

Мастера подскажите плз, как мне сделать так чтоб при перерисовке окна в обработчике WM_PAINT рисовать на форме так чтоб это видно было только по завершению процесса прорисовки(извените наверно не по русски).
....

procedure TFMain.WMPaint(var Message: TWMPaint);
var
i,x,y:integer;
begin
x:=ClientWidth;
y:=ClientHeight;
PatBlt(Canvas.Handle,0,0,x,y,BLACKNESS);
for i:=1 to ((x-414)div 60)+1 do
begin
bitblt(Canvas.Handle,23+i*60,0,60,17,btm[2].canvas.Handle, 0,0,SRCCOPY);
end;
for i:=1 to ((x-307)div 60)+1 do
begin
bitblt(Canvas.Handle,134+i*60,y-40,
60,18,btm[7].canvas.Handle, 0,0,SRCCOPY);
end;

Где btm[] это графические файлы. это только кусок кода, там их много поэтому видно мерцание. плз помогите советом


 
MBo ©   (2003-10-24 14:34) [1]

рисуй на одном битмапе, потом его bitblt


 
ZEE ©   (2003-10-24 14:38) [2]

var ps:TPaintStruct;
dc:HDC;
begin
dc:=BeginPaint(wnd,ps);
...
Rectangle(dc,100,100,300,200);
...
EndPaint(wnd,ps);
end;


 
ZEE ©   (2003-10-24 14:41) [3]

и еще
если для перерисовки окна использовать InvalidateRect то надо так
InvalidateRect(Wnd,nil, false);
false - как раз означает перерисовывать только после завершения прорисовки (EndPaint)
вот из хелпа:
BOOL bErase
Specifies whether the background within the update region is to be erased when the update region is processed. If this parameter is TRUE, the background is erased when the BeginPaint function is called. If this parameter is FALSE, the background remains unchanged.


 
ARTEMKA   (2003-10-24 14:43) [4]

to > ZEE
скажи а WND это нандел моего окна?

и после EndPaint будет перерисовка да?


 
ARTEMKA   (2003-10-24 14:45) [5]

а скажи когда и где надо вызывать InvalidateRect(Wnd,nil,false);


 
ZEE ©   (2003-10-24 14:46) [6]

> ARTEMKA (24.10.03 14:43) [4]
> скажи а WND это нандел моего окна?
да

> и после EndPaint будет перерисовка да?
и еще раз да
:)


 
ZEE ©   (2003-10-24 14:48) [7]

> ARTEMKA (24.10.03 14:45) [5]
> а скажи когда и где надо вызывать InvalidateRect(Wnd,nil,false);
это если ты хочешь что-то нарисовать по другому (например рисуемы текст поменялся или объект сместился) - то вызывай эту процедуру
зы: здесь Wnd - тоже хендл
зыы: и вообще-то есть F1 - можно было бы и там посмотреть...


 
ARTEMKA   (2003-10-24 14:48) [8]

спасибо ZEE



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
6-8573
Ellik
2003-09-05 14:08
2003.11.03
Отправить E-mail, подцепив файл


3-8267
jack128
2003-10-14 13:47
2003.11.03
Отладка ХП


1-8451
Islander
2003-10-24 17:56
2003.11.03
Как из Dword a получить два Word a


6-8569
Novenkij
2003-09-07 01:52
2003.11.03
Качаем файл с инета


14-8662
Ал
2003-10-14 08:48
2003.11.03
Чем можно сделать многоцветные *.ico как в XP