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