Главная страница
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.031 c
3-1108019366
Dmitry
2005-02-10 10:09
2005.03.13
Проблемы с Firebird 1.5?


1-1109348473
babayka
2005-02-25 19:21
2005.03.13
Приоритет окна диалога


1-1109669096
XP
2005-03-01 12:24
2005.03.13
Operator not applicable to this operand type


14-1109079932
anonim
2005-02-22 16:45
2005.03.13
Что такое uptime 100%


3-1107950887
Kat
2005-02-09 15:08
2005.03.13
запрос, выбирающий записи с одинковым содержимым полем