c#图像截取实例
投稿:shichen2014
本文实例讲述了c#图像截取的实现方法。分享给大家供大家参考。具体如下:
图像截取的相关代码如下:
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)  
{  
   Image pic = new Bitmap(this.Width, this.Height);  
   Graphics graphic = Graphics.FromImage(pic);  
   graphic.CopyFromScreen(new Point(this.Location.X, this.Location.Y), new Point(0, 0), new Size(this.Width, this.Height));  
   pic.Save(@"d:/test.jpeg", ImageFormat.Jpeg);  
   graphic.Dispose();  
} 
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]  
private static extern bool BitBlt(  
   IntPtr hdcDest, //目标设备的句柄  
   int nXDest, // 目标对象的左上角的X坐标  
   int nYDest, // 目标对象的左上角的X坐标  
   int nWidth, // 目标对象的矩形的宽度  
   int nHeight, // 目标对象的矩形的长度  
   IntPtr hdcSrc, // 源设备的句柄  
   int nXSrc, // 源对象的左上角的X坐标  
   int nYSrc, // 源对象的左上角的X坐标  
   System.Int32 dwRop // 光栅的操作值  
   );  
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]  
private static extern IntPtr CreateDC(  
   string lpszDriver, // 驱动名称  
   string lpszDevice, // 设备名称  
   string lpszOutput, // 无用,可以设定位"NULL"  
   IntPtr lpInitData // 任意的打印机数据  
   ); 
private void Form1_SizeChanged(object sender, EventArgs e)  
{  
   
} 
private void button2_Click(object sender, EventArgs e)  
{  
   this.Hide();  
     
   IntPtr dc1 = CreateDC("DISPLAY", null,  
       null, (IntPtr)null);  
   //创建显示器的DC  
   Graphics g1 = Graphics.FromHdc(dc1);  
   //由一个指定设备的句柄创建一个新的Graphics对象  
   Bitmap MyImage =  
       new Bitmap(Screen.PrimaryScreen.Bounds.Width,  
    Screen.PrimaryScreen.Bounds.Height, g1);  
   //根据屏幕大小创建一个与之相同大小的Bitmap对象  
   Graphics g2 = Graphics.FromImage(MyImage);  
   //获得屏幕的句柄  
   IntPtr dc3 = g1.GetHdc();  
   //获得位图的句柄  
   IntPtr dc2 = g2.GetHdc();  
   //把当前屏幕捕获到位图对象中  
   BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width,  
       Screen.PrimaryScreen.Bounds.Height,  
       dc3, 0, 0, 13369376);  
   //把当前屏幕拷贝到位图中  
   g1.ReleaseHdc(dc3);  
   //释放屏幕句柄  
   g2.ReleaseHdc(dc2);  
   //释放位图句柄 
   Bitmap img = new Bitmap(MyImage, 800, 600);  
   //缩放图片到800*600  
   img.Save("d:\\MyJpeg.jpg", ImageFormat.Jpeg);  
   MessageBox.Show("已经把当前屏幕保存到" +  
       "C:\\MyJpeg.jpg文件中!");  
   this.Show();  
}
希望本文所述对大家的C#程序设计有所帮助。
