你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
C#实现屏幕截取(四)
 

/// CaptureScreen完成屏幕截取的类

    public class CaptureScreen

    {

   

        #region Public Class Functions

        public static Bitmap GetDesktopImage()

        {

     

            IntPtr m_HBitmap;

 

           

            System.Drawing.Bitmap bmp=null;

 

            SIZE size;

 

            IntPtr   hDC = PlatformInvokeUSER32.GetDC(PlatformInvokeUSER32.GetDesktopWindow());

 

            IntPtr hMemDC = PlatformInvokeGDI32.CreateCompatibleDC(hDC);

     

            size.cx = PlatformInvokeUSER32.GetSystemMetrics                (PlatformInvokeUSER32.SM_CXSCREEN);

 

                    size.cy = PlatformInvokeUSER32.GetSystemMetrics(PlatformInvokeUSER32.SM_CYSCREEN);

     

       

            m_HBitmap = PlatformInvokeGDI32.CreateCompatibleBitmap(hDC, size.cx, size.cy);

     

 

            if (m_HBitmap!=IntPtr.Zero)

            {

                                IntPtr hOld = (IntPtr) PlatformInvokeGDI32.SelectObject(hMemDC,  m_HBitmap);

 

                PlatformInvokeGDI32.BitBlt(hMemDC, 0, 0,size.cx,size.cy, hDC, 0, 0,PlatformInvokeGDI32.SRCCOPY);

 

                PlatformInvokeGDI32.SelectObject(hMemDC, hOld);

                PlatformInvokeGDI32.DeleteDC(hMemDC);

                PlatformInvokeUSER32.ReleaseDC(PlatformInvokeUSER32.GetDesktopWindow(), hDC);

 

                bmp=System.Drawing.Image.FromHbitmap(m_HBitmap);

 

                PlatformInvokeGDI32.DeleteObject(m_HBitmap);

 

                return bmp;

            }

 

            return null;

        }

        #endregion

    }

 

    //该结构控制截取屏幕的大小

    public struct SIZE

    {

        public int cx;

        public int cy;

    }

}

这样就可以效果很好地实现C#屏幕截取编程了。

5 总结

C#屏幕截取编程需要使用很多API编程,使用单独封装的cs文件,即可采用“分而治之”的策略降低编程难度。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089