Вниз
Скачать: CL | DM;

Почему так долго?   Найти похожие ветки 

 
CrowD ©   (2003-03-21 11:50) [0]

Привет, All!

проблема:
пытаюсь вывести рисунок состоящий из спрайтов и записанный в базу данных, при реализации как видно из кода создаю изображение в буфере и только потом кидаю на форму, но при команде Form1.Repaint форма на длительный период становится серой и изображение выводится со значительной задержкой, поясните где узкое место?

P.S.
поле adoqMap_map.AsString может достигать размера 65535
но его обработка идет до переброски буфера на форму

Спасибо.


procedure TForm1.FormPaint(Sender: TObject);
var
X,Y,i : Integer;
t : String;
begin
Form1.Caption := "size: "+adoqMap_size.AsString;
Y:=Y0;
while (Y*22 < Form1.Height)and(Y<adoqMap_size.AsInteger) do begin
X:=X0;
while (X*32 < Form1.Width)and(X<adoqMap_size.AsInteger) do begin
t := copy(adoqMap_map.AsString,adoqMap_size.AsInteger*Y+X,1);
BitBlt(Buffer.Canvas.Handle,X*31,Y*22,46,23, BMMask.Canvas.Handle,0,0,SrcPaint);
BitBlt(Buffer.Canvas.Handle,X*31,Y*22,46,23, BM[i].Canvas.Handle,0,0,SrcAnd);
inc(X);
t := copy(adoqMap_map.AsString,adoqMap_size.AsInteger*Y+X,1);
BitBlt(Buffer.Canvas.Handle,X*31,Y*22+11,46,23, BMMask.Canvas.Handle,0,0,SrcPaint);
BitBlt(Buffer.Canvas.Handle,X*31,Y*22+11,46,23, BM[i].Canvas.Handle,0,0,SrcAnd);
inc(X);
end;
inc(Y);
end;
//StretchBlt(Form1.Canvas.Handle,0,0,Form1.Width,Form1.Height,Buffer.Canvas.Handle,0,0,Round(Form1.Width*Zooming),Round(Form1.Height*Zooming),SrcCopy);
BitBlt(Form1.Canvas.Handle,0,0,Form1.Width,Form1.Height,Buffer.Canvas.Handle,0,0,SrcCopy);
end;


 
CrowD ©   (2003-03-21 14:16) [1]

я тут немного поэксперементировал, проблема свелась к тому что Form1.Canvas при вызове FormPaint, зачемто очищается, как то это погасить можно?

Спасибо.


 
Mihey   (2003-03-21 21:59) [2]

Гм, на канву формы рисунок можно вывести всего один раз, а затем его можно просто перерисовывать функцией Invalidate - как раз в OnPaint.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.017 c
3-7313
NickName
2003-06-09 12:11
2003.07.03
OldValue


14-7608
Jumbo
2003-06-17 04:53
2003.07.03
Command line


1-7446
OlegL
2003-06-23 15:16
2003.07.03
вызов чужой функции в dll


3-7348
Smolin
2003-06-10 13:48
2003.07.03
Экспорт


14-7672
Palladin
2003-06-16 21:57
2003.07.03
подскажите ссылку на




   Наверх