c#图像截取实例

 更新时间:2014年10月13日 16:17:12   投稿: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#程序设计有所帮助。

相关文章

  • 关于c#二叉树的实现

    关于c#二叉树的实现

    本篇文章小编为大家介绍,关于c#二叉树的实现。需要的朋友参考下
    2013-04-04
  • 使用aspose.word 第三方的插件实现导出word

    使用aspose.word 第三方的插件实现导出word

    本文给大家分享的是一个使用使用aspose.word 第三方的插件实现导出word的实例,十分的实用,有需要的小伙伴可以参考下。
    2015-06-06
  • c# 静态类的使用场景

    c# 静态类的使用场景

    这篇文章主要介绍了c# 静态类的使用场景,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-01-01
  • C#实现发送邮件的三种方法

    C#实现发送邮件的三种方法

    这篇文章主要介绍了C#实现发送邮件的三种方法,实例讲述了Localhost,SMTP与SSL-SMTP三种实现方法,对于C#项目开发有不错的借鉴价值,需要的朋友可以参考下
    2014-11-11
  • C#使用foreach语句遍历集合类型的方法

    C#使用foreach语句遍历集合类型的方法

    这篇文章主要介绍了C#使用foreach语句遍历集合类型的方法,可实现通过foreach语句遍历集合类的功能,需要的朋友可以参考下
    2015-06-06
  • C#面向对象之模拟实现商城购物功能

    C#面向对象之模拟实现商城购物功能

    这篇文章主要为大家详细介绍了C#面向对象之模拟实现商城购物功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#检测两个矩阵是否相等的方法

    C#检测两个矩阵是否相等的方法

    这篇文章主要介绍了C#检测两个矩阵是否相等的方法,涉及C#进行数组操作的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#实现统计字数功能的方法

    C#实现统计字数功能的方法

    这篇文章主要介绍了C#实现统计字数功能的方法,较为详细的分析了C#字数统计功能的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#实现随鼠标移动窗体实例

    C#实现随鼠标移动窗体实例

    这篇文章主要介绍了C#实现随鼠标移动窗体实例,主要通过简单的窗体事件代码即可实现鼠标随窗体移动的功能,非常简单实用,需要的朋友可以参考下
    2014-10-10
  • C#线程同步的三类情景分析

    C#线程同步的三类情景分析

    这篇文章主要介绍了C#线程同步的三类情景分析,较为详细生动的讲述了C#线程同步的三类情况,让大家对C#多线程程序设计有一个深入的了解,需要的朋友可以参考下
    2014-10-10

最新评论