Example #1
0
        public Bitmap getFullScreen()
        {
            //方法一
            //IntPtr window = GDIAPI.GetDesktopWindow();
            //IntPtr windc = GDIAPI.GetDC(window);
            //IntPtr winbitmap = GDIAPI.GetCurrentObject(windc, 7);
            //Bitmap mimage = Image.FromHbitmap(winbitmap);
            //try
            //{
            //    GDIAPI.ReleaseDC(windc);
            //}
            //catch { }
            //方法二
            //Bitmap mimage = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
            //Graphics gp = Graphics.FromImage(mimage);
            //gp.CopyFromScreen(new Point(System.Windows.Forms.Screen.PrimaryScreen.Bounds.X, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Y),new Point(0,0),mimage.Size,CopyPixelOperation.SourceCopy);

            //方法三
            IntPtr   windc  = GDIAPI.CreateDC("DISPLAY", null, null, (IntPtr)null);
            Graphics g1     = Graphics.FromHdc(windc);
            Bitmap   mimage = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height, g1);
            Graphics g2     = Graphics.FromImage(mimage);
            IntPtr   dc1    = g1.GetHdc();
            IntPtr   dc2    = g2.GetHdc();

            GDIAPI.BitBlt(dc2, 0, 0, mimage.Width, mimage.Height, dc1, 0, 0, 13369376);
            g1.ReleaseHdc(dc1);
            g2.ReleaseHdc(dc2);
            //GDIAPI.ReleaseDC(windc);
            g1.Dispose();
            g2.Dispose();
            GC.Collect();
            return(mimage);
        }
Example #2
0
        public void getFullScreen(out Bitmap mimage)
        {
            //方法三
            IntPtr windc = GDIAPI.CreateDC("DISPLAY", null, null, IntPtr.Zero);

            //Graphics g1 = Graphics.FromHdc(windc);
            mimage = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
            Graphics g2 = Graphics.FromImage(mimage);
            //IntPtr dc1 = g1.GetHdc();
            IntPtr dc2 = g2.GetHdc();

            GDIAPI.BitBlt(dc2, 0, 0, mimage.Width, mimage.Height, windc, 0, 0, 13369376);
            //g1.ReleaseHdc(dc1);
            g2.ReleaseHdc(dc2);
            //try
            //{
            //    GDIAPI.ReleaseDC(windc);
            //}
            //catch
            //{ }
            //g1.Dispose();
            g2.Dispose();
            GC.Collect();
        }