Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

как с помощью DelphiX сделать screenshot   Найти похожие ветки 

 
Novichok   (2004-11-24 14:17) [0]

как с помощью DelphiX сделать screenshot ?


 
Mihey_temporary ©   (2004-11-24 20:41) [1]

А зачем именно DelphiX?


 
Novichok   (2004-11-25 02:13) [2]

Моя задача это быстро фоткать экран, где то по 5-10 раз в секунду. Если делать это так, то это долго и сильно нагружает комп, он даже на мгновение подвисает:


var
 bm: TBitMap;
begin
 bm := TBitMap.Create;
 bm.Width := Screen.Width;
 bm.Height := Screen.Height;
 bm.PixelFormat:= pf32bit;
 BitBlt(bm.Canvas.Handle, 0, 0,
   bm.Width, bm.Height,
   GetDC(0), 0, 0, SRCCOPY);
end;


А DelphiX вроде как позволяет работать с DirectDraw, а через него это в 10 раз быстрее.
Или может кто знает как это сделать на прямую, работая с DirectDraw на прямую без посторонних компонентов


 
Sapersky   (2004-11-25 10:40) [3]

Во-первых, создавать битмап нужно заранее. Во-вторых, если не указывать конкретный пиксельный формат (bm.PixelFormat), то он должен создаваться с форматом рабочего стола и копироваться быстрее.
С DirectDraw, если нужно получить битмап в системной памяти (передать куда-нибудь, записать на диск) - не быстрее. Быстрее только при копировании видео-видео (если использовать полученный скриншот для рисования чего-нибудь через тот же DirectDraw).


 
Novichok   (2004-11-25 13:27) [4]

Есть ли вообще способ скопировать экран быстрее, чем я это делаю, или хотя бы без подвисаний. Я почему-то был уверен, что через DirectX это происходит быстрее


 
Novichok   (2004-11-25 14:04) [5]

Главный стопор возникает, когда я переделываю bm в jpeg,
Может можно как нить ускорить этот процесс, например сохранять screen сразу в Jpeg


 ms:= TMemoryStream.Create;
 bm := TBitMap.Create;
 bm.Width := Screen.Width;
 bm.Height := Screen.Height;
 bm.PixelFormat:= pf32bit;
 BitBlt(bm.Canvas.Handle, 0, 0,
   bm.Width, bm.Height,
   GetDC(0), 0, 0, SRCCOPY);
 JpegIm := TJpegImage.Create;
 JpegIm.Assign(bm);
 JpegIm.CompressionQuality := 100;
 JpegIm.Compress;
 JpegIm.SaveToStream(ms);
 JpegIm.Destroy;
 bm.Destroy;



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
14-1108906442
olookin
2005-02-20 16:34
2005.03.13
Расскажите пожалуйста, как пользоваться news-группами


1-1109358036
KyRo
2005-02-25 22:00
2005.03.13
Ключ в реестре


6-1104768642
Sergey77
2005-01-03 19:10
2005.03.13
Частота обновления информации касательно подсчета трафика


14-1109107780
olookin
2005-02-23 00:29
2005.03.13
Иван Панфилов - кто-нибудь слушал?


9-1102707516
Zak3D[@Tm]
2004-12-10 22:38
2005.03.13
Привязка ко времени ( как это осуществляется )