c#图像截取实例
本文实例讲述了c#图像截取的实现方法。分享给大家供大家参考。具体如下:
图像截取的相关代码如下:
publicForm1() { InitializeComponent(); }
privatevoidbutton1_Click(objectsender,EventArgse) { Imagepic=newBitmap(this.Width,this.Height); Graphicsgraphic=Graphics.FromImage(pic); graphic.CopyFromScreen(newPoint(this.Location.X,this.Location.Y),newPoint(0,0),newSize(this.Width,this.Height)); pic.Save(@"d:/test.jpeg",ImageFormat.Jpeg); graphic.Dispose(); }
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")] privatestaticexternboolBitBlt( IntPtrhdcDest,//目标设备的句柄 intnXDest,//目标对象的左上角的X坐标 intnYDest,//目标对象的左上角的X坐标 intnWidth,//目标对象的矩形的宽度 intnHeight,//目标对象的矩形的长度 IntPtrhdcSrc,//源设备的句柄 intnXSrc,//源对象的左上角的X坐标 intnYSrc,//源对象的左上角的X坐标 System.Int32dwRop//光栅的操作值 ); [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")] privatestaticexternIntPtrCreateDC( stringlpszDriver,//驱动名称 stringlpszDevice,//设备名称 stringlpszOutput,//无用,可以设定位"NULL" IntPtrlpInitData//任意的打印机数据 );
privatevoidForm1_SizeChanged(objectsender,EventArgse) { }
privatevoidbutton2_Click(objectsender,EventArgse) { this.Hide(); IntPtrdc1=CreateDC("DISPLAY",null, null,(IntPtr)null); //创建显示器的DC Graphicsg1=Graphics.FromHdc(dc1); //由一个指定设备的句柄创建一个新的Graphics对象 BitmapMyImage= newBitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height,g1); //根据屏幕大小创建一个与之相同大小的Bitmap对象 Graphicsg2=Graphics.FromImage(MyImage); //获得屏幕的句柄 IntPtrdc3=g1.GetHdc(); //获得位图的句柄 IntPtrdc2=g2.GetHdc(); //把当前屏幕捕获到位图对象中 BitBlt(dc2,0,0,Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc3,0,0,13369376); //把当前屏幕拷贝到位图中 g1.ReleaseHdc(dc3); //释放屏幕句柄 g2.ReleaseHdc(dc2); //释放位图句柄
Bitmapimg=newBitmap(MyImage,800,600); //缩放图片到800*600 img.Save("d:\\MyJpeg.jpg",ImageFormat.Jpeg); MessageBox.Show("已经把当前屏幕保存到"+ "C:\\MyJpeg.jpg文件中!"); this.Show(); }