////////////////////////////////////////////////////////////////
        /// 
        /// 截取部分屏幕
        /// 
        /// 左上角
        /// 右下角
        /// 是否全屏幕
        /// 返回值Bitmap
        public Bitmap GetPartScreen(Point P1, Point P2, bool Full)
        {
            IntPtr hscrdc, hmemdc;
            IntPtr hbitmap, holdbitmap;
            int nx, ny, nx2, ny2;
            nx = ny = nx2 = ny2 = 0;
            int nwidth, nheight;
            int xscrn, yscrn;
            hscrdc = _gMapView.GetHdc();
            hmemdc = CreateCompatibleDC(hscrdc);//创建一个内存DC            xscrn = 1024; //获取屏幕宽度
            yscrn = 768;//获取屏幕高度
            if (Full)//如果是截取整个屏幕
            {
                nx = 0;
                ny = 0;
                nx2 = xscrn;
                ny2 = yscrn;
            }
            else
            {
                nx = P1.X;
                ny = P1.Y;
                nx2 = P2.X;
                ny2 = P2.Y;
                //检查数值合法性                if (nx < 0) nx = 0;
                if (ny < 0) ny = 0;
                if (nx2 > xscrn) nx2 = xscrn;
                if (ny2 > yscrn) ny2 = yscrn;
            }
            nwidth = nx2 - nx;//截取范围的宽度            nheight = ny2 - ny;//截取范围的高度            hbitmap = CreateCompatibleBitmap(hscrdc, nwidth, nheight);//从内存DC复制到hbitmap句柄    这里可能有问题...................................            holdbitmap = SelectObject(hmemdc, hbitmap);            BitBlt(hmemdc, 0, 0, nwidth, nheight, hscrdc, nx, ny, (UInt32)0xcc0020);            hbitmap = SelectObject(hmemdc, holdbitmap);            DeleteDC(hscrdc);//删除用过的对象            DeleteDC(hmemdc);//删除用过的对象            _gMapView.ReleaseHdc();
            
            return Bitmap.FromHbitmap(hbitmap);//用Bitmap.FromHbitmap从hbitmap返回Bitmap
        }如上,在开发环境下多次运行该过程,会出错,我认为可能是 我加注可能存在问题的资源没有得到释放.请有相关开发经验的大哥大姐帮忙改一下代码,谢谢