读书人

wpf截取荧幕

发布时间: 2012-09-20 09:36:50 作者: rapoo

wpf截取屏幕

private void button1_Click(object sender, RoutedEventArgs e)        {            //调用            IntPtr hDesk = GetDesktopWindow();            IntPtr hSrce = GetWindowDC(hDesk);            IntPtr hDest = CreateCompatibleDC(hSrce);            IntPtr hBmp = CreateCompatibleBitmap(hSrce, (int)SystemParameters.PrimaryScreenWidth, (int)SystemParameters.PrimaryScreenHeight);            IntPtr hOldBmp = SelectObject(hDest, hBmp);            bool b = BitBlt(hDest, 0, 0, (int)SystemParameters.PrimaryScreenWidth, (int)SystemParameters.PrimaryScreenHeight, hSrce, 0, 0, CopyPixelOperation.SourceCopy | CopyPixelOperation.CaptureBlt);            Bitmap bmp = Bitmap.FromHbitmap(hBmp);            SelectObject(hDest, hOldBmp);            DeleteObject(hBmp);            DeleteDC(hDest);            ReleaseDC(hDesk, hSrce);            bmp.Save(@"c:\test.png");            bmp.Dispose();        }        [DllImport("gdi32.dll")]        static extern bool BitBlt(IntPtr hdcDest, int xDest, int yDest, int        wDest, int hDest, IntPtr hdcSource, int xSrc, int ySrc, CopyPixelOperation rop);        [DllImport("user32.dll")]        static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDc);        [DllImport("gdi32.dll")]        static extern IntPtr DeleteDC(IntPtr hDc);        [DllImport("gdi32.dll")]        static extern IntPtr DeleteObject(IntPtr hDc);        [DllImport("gdi32.dll")]        static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);        [DllImport("gdi32.dll")]        static extern IntPtr CreateCompatibleDC(IntPtr hdc);        [DllImport("gdi32.dll")]        static extern IntPtr SelectObject(IntPtr hdc, IntPtr bmp);        [DllImport("user32.dll")]        public static extern IntPtr GetDesktopWindow();        [DllImport("user32.dll")]        public static extern IntPtr GetWindowDC(IntPtr ptr);

读书人网 >编程

热点推荐