Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.021 c
1-8407
dimon4386
2003-10-24 15:47
2003.11.03
Ассемблер


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


1-8493
Grafdionis
2003-10-23 22:17
2003.11.03
Скорость истечения времени


1-8375
DProg
2003-10-22 14:30
2003.11.03
Sharemem


14-8664
VID
2003-10-13 15:17
2003.11.03
ASDSee 6.0, Norton Utilities 2002 6.0





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский