c# 截屏代碼

來源:互聯網
上載者:User

標籤:c#   截屏   

//方法一        public static void GetScreen1()        {            //截取螢幕內容               Size screen = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);            Bitmap memoryImage = new Bitmap(screen.Width, screen.Height);            Graphics memoryGraphics = Graphics.FromImage(memoryImage);            memoryGraphics.CopyFromScreen(0, 0, 0, 0, screen, CopyPixelOperation.MergePaint);            //memoryImage            //memoryImage.Save(@"screen.jpg",ImageFormat.Jpeg);            MemoryStream data = new MemoryStream();            memoryImage.Save(data, ImageFormat.Png);        }
//方法二    public class ScreenCapture    {        /// <summary>        /// Creates an Image object containing a screen shot of the entire desktop        /// </summary>        /// <returns></returns>        public static Image CaptureScreen()        {            return CaptureWindow(User32.GetDesktopWindow());        }        /// <summary>        /// Creates an Image object containing a screen shot of a specific window        /// </summary>        /// <param name="handle">The handle to the window. (In windows forms, this is obtained by the Handle property)</param>        /// <returns></returns>        private static Image CaptureWindow(IntPtr handle)        {            // get te hDC of the target window            IntPtr hdcSrc = User32.GetWindowDC(handle);            // get the size            User32.RECT windowRect = new User32.RECT();            User32.GetWindowRect(handle, ref windowRect);            int width = windowRect.right - windowRect.left;            int height = windowRect.bottom - windowRect.top;            // create a device context we can copy to            IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc);            // create a bitmap we can copy it to,            // using GetDeviceCaps to get the width/height            IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc, width, height);            // select the bitmap object            IntPtr hOld = GDI32.SelectObject(hdcDest, hBitmap);            // bitblt over            GDI32.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0, GDI32.SRCCOPY | GDI32.CAPTUREBLT);            // restore selection            GDI32.SelectObject(hdcDest, hOld);            // clean up             GDI32.DeleteDC(hdcDest);            User32.ReleaseDC(handle, hdcSrc);            // get a .NET image object for it            Image img = Image.FromHbitmap(hBitmap);            // free up the Bitmap object            GDI32.DeleteObject(hBitmap);            return img;        }        /// <summary>        /// Helper class containing Gdi32 API functions        /// </summary>        private class GDI32        {            public const int CAPTUREBLT = 1073741824;            public const int SRCCOPY = 0x00CC0020; // BitBlt dwRop parameter            [DllImport("gdi32.dll")]            public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest,                int nWidth, int nHeight, IntPtr hObjectSource,                int nXSrc, int nYSrc, int dwRop);            [DllImport("gdi32.dll")]            public static extern IntPtr CreateCompatibleBitmap(IntPtr hDC, int nWidth,                int nHeight);            [DllImport("gdi32.dll")]            public static extern IntPtr CreateCompatibleDC(IntPtr hDC);            [DllImport("gdi32.dll")]            public static extern bool DeleteDC(IntPtr hDC);            [DllImport("gdi32.dll")]            public static extern bool DeleteObject(IntPtr hObject);            [DllImport("gdi32.dll")]            public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);        }        /// <summary>        /// Helper class containing User32 API functions        /// </summary>        private class User32        {            [StructLayout(LayoutKind.Sequential)]            public struct RECT            {                public int left;                public int top;                public int right;                public int bottom;            }            [DllImport("user32.dll")]            public static extern IntPtr GetDesktopWindow();            [DllImport("user32.dll")]            public static extern IntPtr GetWindowDC(IntPtr hWnd);            [DllImport("user32.dll")]            public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);            [DllImport("user32.dll")]            public static extern IntPtr GetWindowRect(IntPtr hWnd, ref RECT rect);        }    }


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.