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

Вниз

Нет курсора   Найти похожие ветки 

 
WeeK   (2006-09-07 09:27) [0]

Снимаю скриншот с экрана и сохраняю в файл, делаю так:

var
 bmp: TBitmap;
 DC: HDC;
begin
 bmp:=TBitmap.Create;
 bmp.Height:=Screen.Height;
 bmp.Width:=Screen.Width;
 DC:=GetDC(0);  //Дескpиптоp экpана
 bitblt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
 Canvas.Draw(0,0,bmp);
 bmp.SaveToFile("Screen.bmp");
 ReleaseDC(0, DC);
end;


Но курсора не видно, на скриншоте, а надо бы, не подскажете?


 
Elen ©   (2006-09-07 09:29) [1]


> WeeK

Даже Radmin не рисует курсор мышы на скриншотах экрана. ИМХО забудь


 
RoNaBoU   (2006-09-07 09:31) [2]

Но можно наверное программно вставить, определить хде курсор, и сверху на него нарисовать!


 
Джо ©   (2006-09-07 09:32) [3]

procedure MakeScreenshot (Bmp: TBitmap; CaptureCursor: Boolean = True);
var
 DC: HDC;
 ACursor: HICON;
 Pt: TPoint;
 CurInfo: tagCURSORINFO;
 IcoInfo: _ICONINFO;
begin
 Bmp.Width := Screen.Width;
 Bmp.Height := Screen.Height;

 DC := GetDC (GetDesktopWindow);
 try
   BitBlt (
     Bmp.Canvas.Handle,
     0,0,Bmp.Width,Bmp.Height,
     DC,
     0,0,
     SRCCOPY);

   // -- курсор
   if CaptureCursor then
   begin

     CurInfo.cbSize := SizeOf(CurInfo);
     GetCursorInfo(CurInfo);

     ACursor := CurInfo.hCursor;
     Pt := CurInfo.ptScreenPos;

     GetIconInfo (ACursor,IcoInfo);

     DrawIcon(
       Bmp.Canvas.Handle,
       Pt.X-IcoInfo.xHotspot,
       Pt.Y-IcoInfo.yHotspot,
       ACursor
     )
   end;

 finally
   ReleaseDC (GetDesktopWindow,DC);
 end;
end;



 
SerJaNT ©   (2006-09-07 09:32) [4]

> Даже Radmin не рисует курсор мышы на скриншотах экрана.
> ИМХО забудь


RAdmin 3.0 курсор рисует.


 
SerJaNT ©   (2006-09-07 09:39) [5]

> Даже Radmin


А что RAdmin у нас супер прога чтобы сравниваться с ней? Если в нем что-то отсутствует это не значит что это не возможно сделать.


 
Barloggg   (2006-09-07 10:11) [6]

курсор рисуется оверлеем. аппаратно. и на экране его как-бы нет. ибо оверлей это внеэкранная поверхность.

а если отключить в винде все графические ускорения в свойствах экрана, то курсор на скриншотах появится.

этот прикол аналогичен попытке снять скриншот с фильма в windowsmedia плейере во время просмотра. окно будет, но будет залито черным цветом. после того как закрыть медиаплейер. пока медиаплейер открыть картинка будет видна... частично :)...


 
Barloggg   (2006-09-07 10:17) [7]

клинический случай как справится с такой задачей я встретил в обучающем компакт-диске. там все примеры были сняты видеокамерой. там и курсор есть и голос. :))))

на нормальном компакт-диске с обучалкой были скриншоты и был курсор. но это был коллаж, а не скриншотовидеозапись, т.е. курсор рисовался отдельно ручками. и потом все это сливалось в один avi файл.


 
WeeK   (2006-09-07 10:18) [8]

Да ещё вопрос по ходу появился, как можно уменьшить при сохранении количества цветов, Чтоб картинка меньше весила


 
Джо ©   (2006-09-07 10:32) [9]

2WeeK: Тебя чем код в [3] не устроил?


> [8] WeeK   (07.09.06 10:18)
> Да ещё вопрос по ходу появился, как можно уменьшить при
> сохранении количества цветов, Чтоб картинка меньше весила

Bitmap.PixelFormat, но не лучше ли записывать в Jpeg?


 
Barloggg   (2006-09-07 13:05) [10]

а я ручками уменьшал :) правда на входе имел 8битный палитровый битмап и ужимал его с допуском (читай потерями) в, скажем, 10-15% и выигрывал при этом порядка 30% палитры. а там перегонка в PNG и кое-какая экономия места на диске...

кстати пришлось мне сравнить скорость изменения формата ииз 24bit в 8bit. Photoshop управился за пару секунд. Gimp (фрееварный клон) потел минут 7-10.
как странно. казалось-бы всего-то делов: посчитать сколько каких цветов использовано, потом вычленить главные цвета (тех кого больше и тех кто сильно отличается от остальных), потом ужать остальные до суммарного кол-ва не более 256, потом сделать таблицу замен с какого цвета на какой и потом сформировать результат.
кстати я предпочитаю сделать сначала файл а потом его загрузить из потока как картинку чем пользоваться canvas"ом. наверное это комплекс вынесенный из изучения D3D...



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
15-1157541245
Vlad
2006-09-06 15:14
2006.09.24
Задачка для поступающих в 1-й класс школы


15-1157452423
Konstantin555
2006-09-05 14:33
2006.09.24
HELP! Как разблокировать CD-ROM?!


15-1156957163
Chort
2006-08-30 20:59
2006.09.24
Проблема с Рабочим столом!


15-1157351611
Dima123
2006-09-04 10:33
2006.09.24
Как в XML написать hex число ?


15-1157093631
ArtemESC
2006-09-01 10:53
2006.09.24
Андрес Сеговия





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