如何将绘制区域复制到 CImage 中
How to copy a draw area into a CImage
我是MFC新手
我正在尝试将 CScrollView 对话框(已绘制内容)复制到图像中,然后将其另存为 bmp、jpg 或 tiff 图像。
我知道如何将 CImage 保存到文件中,但我无法将绘图区域复制到新的 CImage 对象中。我知道复制的程序。但是我无法进入代码。
- 我需要获取绘制区域的CDC。
- 创建新的 DC 并将其复制到新的 DC 或映像。
- 保存图像。
有什么指点吗?
您可以根据 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();
我是MFC新手
我正在尝试将 CScrollView 对话框(已绘制内容)复制到图像中,然后将其另存为 bmp、jpg 或 tiff 图像。
我知道如何将 CImage 保存到文件中,但我无法将绘图区域复制到新的 CImage 对象中。我知道复制的程序。但是我无法进入代码。
- 我需要获取绘制区域的CDC。
- 创建新的 DC 并将其复制到新的 DC 或映像。
- 保存图像。
有什么指点吗?
您可以根据 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();