C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > c#图像截取

c#图像截取实例

投稿:shichen2014

这篇文章主要介绍了c#图像截取实例,是Windows桌面应用程序设计中一个非常实用的技巧,本文实例中备有较为详细的注释便于理解,需要的朋友可以参考下

本文实例讲述了c#图像截取的实现方法。分享给大家供大家参考。具体如下:

图像截取的相关代码如下: 

复制代码 代码如下:
public Form1() 

   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#程序设计有所帮助。

您可能感兴趣的文章:
阅读全文