在C#中,没有关于截屏的相关函数,这就需要使用Win32 API函数在C#代码中完成截屏。
一、基础知识介绍:
gdi32.dll:
系统文件gdi32.dll是存放在Windows系统文件夹中的重要文件,通常情况下是在安装操作系统过程中自动创建的,对于系统正常运行来说至关重要。除非用户电脑被木马病毒、或是流氓软件篡改导致出现gdi32.dll丢失、缺失损坏等弹窗现象,否则不建议用户对该类文件(gdi32.dll)进行随意的修改。
gdi32.dll是,包含的函数用来绘制图像和显示文字。
DeleteDC:该函数删除指定的设备上下文环境
Bool DeleteDC(HDC hdc);
DeleteObject:该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。
BOOL DeleteObject(HGDIOBJ hObject);
BitBlt:该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境
BOOL BitBlt(
HDC hdcDest, // 指向目标设备环境的句柄
int nXDest, // 指定目标矩形区域左上角的X轴逻辑坐标。
int nYDest, // 指定目标矩形区域左上角的Y轴逻辑坐标。
int nWidth, // 指定源在目标矩形区域的逻辑宽度。
int nHeight, // 指定源在目标矩形区域的逻辑高度
HDC hdcSrc, // 指向源设备环境的句柄。
int nXSrc, // 指定源矩形区域左上角的X轴逻辑坐标
int nYSrc, // 指定源矩形区域左上角的Y轴逻辑坐标。
DWORD dwRop // 指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。
);
CreateCompatibleBitmap:该函数创建与指定的设备环境相关的设备兼容的位图。
HBITMAP CreateCompatibleBitmap(
HDC hdc, // 设备环境句柄
int nWidth, // 指定位图的宽度,单位为像素
int nHeight // 指定位图的高度,单位为像素
);
CreateCompatibleDC:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。通过GetDc()获取的HDC直接与相关设备沟通,而本函数创建的DC,则是与内存中的一个表面相关联。
HDC CreateCompatibleDC(
HDC hdc // 现有设备上下文环境的句柄
);
SelectObject:计算机编程语言函数,该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。
HGDIOBJ SelectObject(
HDC hdc, // 设备上下文环境的句柄。
HGDIOBJ hgdiobj // 被选择的对象的句柄,该指定对象必须由如下的函数创建
);
user32.dll:
user32.dll是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。
GetDesktopWindow:该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。桌面窗口是一个要在其上绘制所有的图标和其他窗口的区域。
HWND GetDesktopWindow(VOID);
GetDC:该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。
HDC GetDC(
HWND hWnd // handle to window
);
GetSystemMetrics:用于得到被定义的系统数据或者系统配置信息
int GetSystemMetrics(
int nIndex // system metric or configuration setting
);
GetWindowDC:返回hWnd参数所指定的窗口的设备环境。
HDC GetWindowDC(
HWND hWnd // handle to window
);
ReleaseDC:函数释放设备上下文环境(DC)供其他应用程序使用。函数的效果与设备上下文环境类型有关。它只释放公用的和设备上下文环境,对于类或私有的则无效。
int ReleaseDC(
HWND hWnd, // handle to window
HDC hDC // handle to DC
);
C#导入dll时类型对应关系:
C++中:
HWND:
h 是类型描述,表示句柄(handle), Wnd 是变量对象描述,表示窗口,所以hWnd 表示窗口句柄。通俗地说,如果把一个到处跑的人当作指针的话,那么HWND就是该人的身份证—-我想应该是身份证号码。
HDC:
HDC设备上下文是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的 Windows 数据结构。所有绘制调用都通过设备上下文对象进行,这些对象封装了用于绘制线条、形状和文本的 Windows API。
HGDIOBJ:
指向一个GDI对象。
HBITMAP:
指向一个bitmap。
C#中:
IntPtr:
IntPtr 类型被设计成整数,其大小适用于特定平台。 即是说,此类型的实例在 32 位硬件和操作系统中将是 32 位,在 64 位硬件和操作系统上将是 64 位。
IntPtr 类型可以由支持指针的语言使用,并可作为在支持与不支持指针的语言间引用数据的一种通用