我现在可以得到DIB数据区的数据,
请问各位如何得到缩小一倍后的的图象,并成BMP文件?

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3086/3086532.xml?temp=3.625751E-04
      

  2.   

    看这个例子:HBITMAP CShowBmpInDlgDlg::CopyScreenToBitmap(LPRECT lpRect){     //lpRect 代表选定区域      {          HDC hScrDC, hMemDC;           // 屏幕和内存设备描述表          HBITMAP hBitmap, hOldBitmap;           // 位图句柄          int nX, nY, nX2, nY2;           // 选定区域坐标          int nWidth, nHeight;           // 位图宽度和高度          int xScrn, yScrn;           // 屏幕分辨率                   // 确保选定区域不为空矩形          if (IsRectEmpty(lpRect))               return NULL;          //为屏幕创建设备描述表          hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);          //为屏幕设备描述表创建兼容的内存设备描述表          hMemDC = CreateCompatibleDC(hScrDC);          // 获得选定区域坐标          nX = lpRect->left;          nY = lpRect->top;          nX2 = lpRect->right;          nY2 = lpRect->bottom;          // 获得屏幕分辨率          xScrn = GetDeviceCaps(hScrDC, HORZRES);          yScrn = GetDeviceCaps(hScrDC, VERTRES);          //确保选定区域是可见的          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);          // 把新位图选到内存设备描述表中          hOldBitmap =(HBITMAP)SelectObject(hMemDC, hBitmap);          // 把屏幕设备描述表拷贝到内存设备描述表中          BitBlt(hMemDC, 0, 0, nWidth, nHeight,               hScrDC, nX, nY, SRCCOPY);          //得到屏幕位图的句柄          hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);          //清除           DeleteDC(hScrDC);          DeleteDC(hMemDC);          // 返回位图句柄          return hBitmap;      } }