Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        //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);
            }
        }
Exemplo n.º 3
0
 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);
     }
 }