public static System.Drawing.Image Snip2() { _SelectionCanceled = false; _SelectionDone = false; var screens = ScreenHelper.GetMonitorsInfo(); _forms = new SnippingTool[screens.Count]; for (int i = 0; i < screens.Count; i++) { int hRes = screens[i].HorizontalResolution; int vRes = screens[i].VerticalResolution; int top = screens[i].MonitorArea.Top; int left = screens[i].MonitorArea.Left; var bmp = new Bitmap(hRes, vRes, PixelFormat.Format32bppPArgb); using (var g = Graphics.FromImage(bmp)) { g.CopyFromScreen(left, top, 0, 0, bmp.Size); } //_forms[i] = new SnippingTool(bmp, left, top, hRes, vRes); _forms[i] = new SnippingTool(bmp, new Rectangle(left, top, hRes, vRes), 0); _forms[i].Show(); } // Wait to be done for (; ;) { Application.DoEvents(); if (_SelectionCanceled) { for (int i = 0; i < _forms.Length; i++) { _forms[i].Dispose(); } return(null); } if (_SelectionDone) { System.Drawing.Image img = null; for (int i = 0; i < screens.Count; i++) { //if (_forms[i].Image != null) return _forms[i].Image; if (_forms[i].Image != null) { img = _forms[i].Image; } _forms[i].Dispose(); } return(img); } } }
//private void CloseForms() //{ // for (int i = 0; i < _forms.Length; i++) { // _forms[i].Dispose(); // } //} #endregion public static System.Drawing.Image Snip() { var rc = Screen.PrimaryScreen.Bounds; using (Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format24bppRgb)) { using (Graphics gr = Graphics.FromImage(bmp)) { gr.CopyFromScreen(0, 0, 0, 0, bmp.Size); } using (var snipper = new SnippingTool(bmp, new Rectangle(0, 0, 0, 0), 0)) { if (snipper.ShowDialog() == DialogResult.OK) { return(snipper.Image); } } return(null); } }
public static System.Drawing.Image SnipRect(Rectangle limitedRect, int margine, ref Rectangle margineRect, ref Rectangle snipedRect) { using (Bitmap bmp = new Bitmap(limitedRect.Width, limitedRect.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb)) { using (Graphics gr = Graphics.FromImage(bmp)) { gr.CopyFromScreen(limitedRect.X, limitedRect.Y, 0, 0, bmp.Size); } using (var snipper = new SnippingTool(bmp, limitedRect, margine)) { if (snipper.ShowDialog() == DialogResult.OK) { snipedRect = _Selection; margineRect = _margineRect; return(snipper.Image); } } return(null); } }