Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.008 c
1-7529
noteens
2003-06-09 20:25
2003.07.03
Word+Delphi


1-7515
ABBS
2003-06-21 18:19
2003.07.03
Закрытие приложения


14-7697
savva
2003-06-17 10:32
2003.07.03
у кого был опыт лечения полиартрита?


1-7484
Evil_forever
2003-06-19 23:52
2003.07.03
---|Ветка была без названия|---


1-7492
Ajax
2003-06-18 21:03
2003.07.03
Утечки памяти.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский