2011-01-11 2 views
2

Я хотел бы написать скриншот в Python. Прямо сейчас я изучаю, как я могу это сделать. У меня есть сценарий, создающий скриншот с использованием win32 api, например here, но вы хотите включить указатель мыши на скриншот.Как сделать растровое изображение текущего указателя мыши?

С win32gui.GetCursorInfo() я получаю его состояние (показано/скрыто), его дескриптор и его положение. Моя цель - использовать дескриптор для доступа к фактическому растровому изображению курсора, скопировать его и добавить его на мой скриншот в правильных координатах. Тем не менее, я не могу найти какого-либо документа, говорящего, что я могу сделать с этим дескриптором, как только я его получу.

Я думаю, что мне, возможно, придется делать как сам скриншот, т. Е. Получить DC курсора, создать битмап, совместимый с ним, и скопировать в него с помощью BitBlt. Я на правильном пути?

ответ

3

ли питон win32 API включает DrawIconEx:

http://msdn.microsoft.com/en-us/library/ms648065%28v=vs.85%29.aspx

вам нужно сделать вытяжку контекст, чтобы написать его, а затем передать, что и курсор ручку ...

(или plain DrawIcon)

+0

Он делает :). Спасибо, спасибо. – NorthernLights

+0

Хм, он выбрасывает «TypeError: объект не является объектом PyHANDLE» на дескрипторе, возвращаемом win32gui.GetCursor(). – NorthernLights

+0

Ошибка произошла только с win32gui.DrawIcon(). pyCDC.DrawIcon() не выдает ошибку. Работает как шарм и длится всего 2 строки. Благодаря! – NorthernLights

0

Anther опция для фактического использования библиотеки изображений Python (PIL) вы можете легко редактировать растровое изображение с ним. (намного проще, чем на самом деле, используя win32 API.)

вы можете использовать ImageGrab и ImageDraw

+0

Спасибо, но я избегаю PIL, потому что он не может сделать многоэкранный снимок экрана. – NorthernLights

0

После того, как вы получите значок ручки курсора из GetCursorInfo, вы можете сделать это с DrawIcon или DrawIconEx, который я предполагаю, в Win32 API, который вы используете. Вам нужно будет создать DC для растрового изображения скриншотов для рендеринга значка, да, но я не думаю, что вам нужно создать DC для самой иконки курсора - DrawIcon должен быть достаточным.

Смежные вопросы