![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Снимок экрана [D6, Win2k, WinXP]
Nic2 © (2004-09-22 17:41:00)Здравствуйте Мастера.
Пишу программу, которая передает снимки моего экрана на др. машину по сети и там их отображает (короче просмотр экрана удаленной машины). Делать это пытаюсь 24 кадра в сек., пакуя снимки в JPEG Проблема такая: упаковка в JPEG длится долго, а по сему получается максимум 8 кадров в секунду. Можно ли как-то увеличить кол-во кадров в секунду.
Код:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
procedure TFORM1.CopyScrMy();
var
ScrBitmap: TBitmap;
jpg: TJPEGImage;
begin
DC := GetDC(0);
BInfo.bmiHeader.biSize := sizeof(tagBITMAPINFOHEADER);
BInfo.bmiHeader.biWidth := 1024;
BInfo.bmiHeader.biHeight := 768;
BInfo.bmiHeader.biPlanes := 1;
BInfo.bmiHeader.biBitCount := 24;
BInfo.bmiHeader.biCompression := BI_RGB;
binfo.bmiHeader.biSizeImage:=0;
ScrBitmap := TBitmap.Create();
ScrBitmap.Handle := CreateDIBSection(Canvas.Handle, BInfo, DIB_RGB_COLORS, Scr, 0, 0);
bitblt(ScrBitmap.Canvas.Handle,0,0,1024,768,DC,0,0,srccopy);
ScrBitmap.ScanLine[1];
try
if not ScrBitmap.Empty then
begin
ms:=TMemoryStream.Create;
jpg := TJPEGImage.Create;
jpg.Performance:=jpBestspeed;
jpg.PixelFormat:=jf8Bit;
jpg.Scale:=jsHalf;
jpg.CompressionQuality:=50;
jpg.Compress;
jpg.Assign(ScrBitmap);
ScrBitmap.Assign(jpg);
jpg.SaveToStream(ms);
ms.Position:=0;
try
Socket.PostIt(ms);
except
end;
end;
finally
ms.Clear;
b.Free;
jpg.Free;
DeleteDC(DC);
SCRBitmap.Free;
end;
end;
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Заранее спасибо.
Mihey_temporary (2004-09-23 15:26:00) [41]Попробуй использовать глобальные переменные, например, для Jpg, т.е. не создавать и удалять каждый раз.
Анонимщик (2004-09-23 15:24:00) [42]А сколько кадров ты в состоянии сжать за секунду?
Multy (2004-09-23 14:50:00) [43]А почему не воспользоватся уже готовым совтом?
WondeRu (2004-09-23 13:02:00) [44]а пробуй просто упаковывать! используй zlib (F1 in Delphi)