Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
3-1153450269
Leshiy
2006-07-21 06:51
2006.09.24
Выборка из разных таблиц в зависимости от условия.


2-1157200732
Sam Stone
2006-09-02 16:38
2006.09.24
Параметр для потока


15-1157187351
Nic
2006-09-02 12:55
2006.09.24
Почти полностью загружается и вылетает


15-1156932901
AntiKur
2006-08-30 14:15
2006.09.24
Курение вредно для здаровья


15-1157621569
Delphi basic
2006-09-07 13:32
2006.09.24
Кто как придумывает названия разрабатываемым программам?