怎么把MFC的对话框上的内容以图片的形式储存起来

我在上面用LineTo啊上面函数画了很多东西了,要存到硬盘... 我在上面用LineTo啊上面函数画了很多东西了,要存到硬盘 展开
 我来答
epmhm
2010-07-15 · TA获得超过112个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:158万
展开全部
我大致上了解你的想法,个人建议你在视图里实现,下面我附上部分代码供你参考:

CBitmap * CTesttView::GetViewBitmap(int x, int y, int width, int height)
{
CBitmap * winBmp = NULL;

CClientDC dc(this);
HDC hdc = dc.m_hDC;
HDC hdc2 = ::CreateCompatibleDC(NULL);
HBITMAP bitmap = ::CreateCompatibleBitmap(hdc, width, height);
::SelectObject(hdc2, bitmap);
::BitBlt(hdc2, 0, 0, width, height, hdc, x, y, SRCCOPY);
winBmp = CBitmap::FromHandle(bitmap);
return winBmp;
}

//参数里的X,Y是视图里你要保存为图片的起始位置。
上面的代码,就可以得到一张DDB的指针,如果你想把它保存起来,比如说BMP文件,你可以把这个DDB位图转换成DIV位图,然后直接写文件就是了,这个网络上有很多资料。我这里介绍一个投机的方法,就是把位图放在剪贴板上面,然后就可以通过粘贴到其他文档上就可以保存了,比如说WINDOW自带的画图工具。下面是代码:
CRect preRect(m_prePoint, point);
m_prePoint = point;

//将方框内的图片复制到剪贴板上
if (OpenClipboard())
{
EmptyClipboard();

CBitmap * winBmp = GetViewBitmap(preRect.left, preRect.top, preRect.Width(), preRect.Height());
if (winBmp != NULL)
{
SetClipboardData(CF_BITMAP, winBmp->m_hObject);
CloseClipboard();
winBmp->DeleteObject();
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式