![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите оптимизировать код [D6, WinXP]
Dennis S © (2005-05-03 11:37:00)комп 2,4GHz - но при выполнении кода на секунду притормаживает.
При движении мыши, курсор замирает на секунду на месте...
Как этого избежать? Может с кодом что-то не так?
Копирует экран в ВМР, потом конвертит в JPEG и сохраняет...
Что можно сделать, чтобы процесс работы программы не был так заметен??
=======================
procedure TForm1.T1Timer(Sender: TObject);
var
bmp: TBitmap;
jp: TJpegImage;
DC: HDC;
S,S1,Sx: String;
D: String;
begin
T1.Interval := StrToInt(mmTIME.Lines[1]);
if T1.Interval <> 1000 then begin
{---//---}
end;
bmp := TBitmap.Create;
jp := TJpegImage.Create;
bmp.Height := Screen.Height;
bmp.Width := Screen.Width;
DC:=GetDC(0);
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width,
Screen.Height,DC, 0, 0, SRCCOPY);
jp.Assign(bmp);
jp.CompressionQuality := 20;
jp.Compress;
S := mmTIME.Lines[3];
S1 := mmTIME.Lines[5];
Sx := mmTIME.Lines[7];
if S1 = '1' then begin
x := x + 1;
D := DateToStr(Date);
Sx := Sx + D +'_screen_'+ IntToStr(x) +'_.jpg';
jp.SaveToFile(Sx);
end;
jp.SaveToFile(S);
ReleaseDC(0, DC);
bmp.Free;
jp.Free;
end;
@!!ex (2005-05-03 12:34:00) [1]ДИНАМИЧЕСКОЕ ВЫДЕЛЕНИЕ ПАМЯТИ ОДНА ИЗ САМЫХ МЕДЛЕННЫХ ОПЕРАЦИЙ!!!
Создавай объекты ОДИН раз! Будет в разы быстрее.