摘 要 给出了一种效果良好的C#屏幕截取编程方法及其实现代码,所截取的屏幕能够以各种图像格式存储起来。
关键词 屏幕截取;C#
1 引言
屏幕截取是图像编程的一个重要课题,可将截取的屏幕作为图像存储在内存中。.NET提供了GDI+作为编程工具,能够方便地将截取的屏幕以各种图像格式存储起来。目前,在公开发表的C#屏幕截取编程中,通常的效果都不好,在此提供一种效果良好的C#屏幕截取编程方法。
2 API函数进行C#屏幕截取
在SDK platform 中,与此相关的API有GetDesktopWindow、CreateCompatibleDC、GetSystemMetrics、SelectObject、BitBlt、ShowWindow,可将有关的API封装到相应的C#文件中,如以下代码封装了CreateCompatibleDC的API函数:
[DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")]
public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc,int nWidth, int nHeight);
3 存储
为将截取屏幕存储为多种图像格式,引入了System.Windows.Forms.SaveFileDialog类,对其Filter属性编程:
this.saveFileDialog1.Filter = "JPEG files(*.jpg)|*.jpg|gif files(*.gif)|*.gif|bmp files(*.bmp)|*.bmp|Tiff files(" +
"*.tiff)|*.tiff";
以下代码可实现将截取屏幕存储为多种图像格式:
private void button1_Click(object sender, System.EventArgs e)
{
if(this.saveFileDialog1.ShowDialog()==DialogResult.OK&&saveFileDialog1.FileName!="")
{
PlatformInvokeUSER32.ShowWindow(Form.ActiveForm.Handle,2);
switch(this.saveFileDialog1.FilterIndex)
{
|