如何将绘制区域复制到 CImage 中

How to copy a draw area into a CImage

我是MFC新手

我正在尝试将 CScrollView 对话框(已绘制内容)复制到图像中,然后将其另存为 bmp、jpg 或 tiff 图像。

我知道如何将 CImage 保存到文件中,但我无法将绘图区域复制到新的 CImage 对象中。我知道复制的程序。但是我无法进入代码。

  1. 我需要获取绘制区域的CDC。
  2. 创建新的 DC 并将其复制到新的 DC 或映像。
  3. 保存图像。

有什么指点吗?

您可以根据 Window 大小创建 CImage,然后使用 BitBlt 在该图像上绘图。使用CImage::GetDC()获取HDC,稍后别忘了调用CImage::ReleaseDC()

CDC *pDC; //or use CClientDC, CPaintDC etc.
//do all drawings on pDC first
//pDC->TextOut(0,0,L"hello world")...

CRect rc;
GetClientRect(&rc);

CImage image;
image.Create(rc.Width(), rc.Height(), 32);

HDC imageHDC = image.GetDC(); 
::BitBlt(imageHDC, 0, 0, rc.Width(), rc.Height(), pDC->GetSafeHdc(), 0, 0, SRCCOPY);
image.Save(L"fileName.jpg", GUID_NULL);
image.ReleaseDC();