首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

初学者的疑惑,求注释

2012-09-09 
菜鸟的疑惑,求注释小弟刚接触GDI。大神帮我注释下下面的代码(通俗点,详细点,毕竟菜鸟嘛。0.0)。C# codepublic

菜鸟的疑惑,求注释
小弟刚接触GDI。大神帮我注释下下面的代码(通俗点,详细点,毕竟菜鸟嘛。0.0)。

C# code
public static Bitmap GetDesktop()        {            int screenX;            int screenY;            IntPtr hBmp;            IntPtr hdcScreen = GetDC(GetDesktopWindow());            IntPtr hdcCompatible = CreateCompatibleDC(hdcScreen);            screenX = GetSystemMetrics(0);            screenY = GetSystemMetrics(1);            hBmp = CreateCompatibleBitmap(hdcScreen, screenX, screenY);            if (hBmp != IntPtr.Zero)            {                IntPtr hOldBmp = (IntPtr)SelectObject(hdcCompatible, hBmp);                BitBlt(hdcCompatible, 0, 0, screenX, screenY, hdcScreen, 0, 0, 13369376);                SelectObject(hdcCompatible, hOldBmp);                DeleteDC(hdcCompatible);                ReleaseDC(GetDesktopWindow(), hdcScreen);                Bitmap bmp = System.Drawing.Image.FromHbitmap(hBmp);                DeleteObject(hBmp);                GC.Collect();                return bmp;            }


[解决办法]
对于这段代码,你需要理解一下DC的概念,和windows api DC操作。

大致意思:
1、取得屏幕的DC
2、创建一个兼容的DC
3、创建一个屏幕大小的兼容Bitmap
4、将此位图算入兼容DC
5、将屏幕DC拷贝到兼容的DC的位图中
6、回复兼容DC的位图,上一步已经返回的结果
7、删除兼容的DC
8、释放桌面DC
9、从Win32位图句柄转换为.Net的Bitmap类对象
10、删除位图句柄。

热点排行