这里截图针对的并非动态截图,只能截取静态图片。全部采用C#语法,并不涉及API的调用。
原理:当触发截图操作时,首先新建一个Form,让当前桌面作为Form的背景图片,并设置窗体为顶层,并最大化显示,
其次,当用户单击鼠标按下并移动时动态画矩形。当用户释放鼠标并双击界面时,截取指定区域图片。
步骤:
首先获取桌面图片:
Screen screen = Screen.PrimaryScreen;//得到显示设备
Rectangle displayRect = screen.Bounds;//获取显示设备的大小
Bitmap bitmap = new Bitmap(displayRect.Width, displayRect.Height);//新建一个显示设备大小的图片作为画布
Graphics g = Graphics.FromImage(bitmap);//利用新建的图像创建画板
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), bitmap.Size);//将屏幕复制到画板上,实际上是复制到了bitmap画布上
其次设置Form必要属性:
this.DoubleBuffered = true;//开启控件双缓冲
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
this.UpdateStyles();//