Главная страница
    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.037 c
1-1109665524
Ivolg
2005-03-01 11:25
2005.03.13
TrayIcon


14-1108743112
Nic87
2005-02-18 19:11
2005.03.13
Помогите найти песню


4-1105649578
Scained
2005-01-13 23:52
2005.03.13
Как перевести Ring3 в Ring0


11-1092770529
Алексей
2004-08-17 23:22
2005.03.13
Как убрать кнопку программы на панели задач?


3-1108024003
REA
2005-02-10 11:26
2005.03.13
SQL Запрос





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