Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.03;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.017 c
3-7357
inspirion
2003-06-10 22:19
2003.07.03
Перехват данных


3-7316
anton2v
2003-06-09 16:31
2003.07.03
Процесс не может получить доступ к файлу


1-7466
Fil
2003-06-20 16:15
2003.07.03
Копирование каталогов


3-7339
Solod
2003-06-10 09:19
2003.07.03
Перевод с BDE в ADO


3-7366
off
2003-06-11 10:01
2003.07.03
IB два в одном или как по умному слить два файла *.gdb в один?