Главная страница
    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.043 c
2-1157458352
barakuda
2006-09-05 16:12
2006.09.24
Запрос чегото, нетого ...


3-1153900271
miammiam
2006-07-26 11:51
2006.09.24
Нужно перенести данные из одной DBF в другую DBF таблицу


2-1157313737
Селезин
2006-09-04 00:02
2006.09.24
Как определить строку popupmenu?


1-1155198521
Всилий
2006-08-10 12:28
2006.09.24
Вовремя исполнения Form:=nil


15-1157272702
Проггер из библиотеки
2006-09-03 12:38
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский