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

Вниз

как с помощью 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 вся ветка

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

Наверх




Память: 0.45 MB
Время: 0.039 c
1-1109537739
Vasek
2005-02-27 23:55
2005.03.13
DBGridEh


4-1107237777
sergeiA
2005-02-01 09:02
2005.03.13
CreateThread-очередной глупый вопрос


3-1108103653
dma
2005-02-11 09:34
2005.03.13
Обновление loockup полей


6-1105373369
TButton
2005-01-10 19:09
2005.03.13
Послать запрос скрипту на сервере и получить ответ


14-1109063793
Ega23
2005-02-22 12:16
2005.03.13
23 февраля посвещается...





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