Форум: "Начинающим";
Текущий архив: 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