【发布时间】:2015-04-04 03:52:42
【问题描述】:
我正在构建一个 MFC c++ 应用程序,让用户在其中读取图像,在其上画线,然后保存。
所以我有一个名为“Image”的“CImage”对象,用户将图像加载到其中。
我有一个设备上下文对象,我可以在上面画线 设备上下文对象在运行时使用“OnLButtonDown”和“OnLButtonUp”事件处理程序。
然后我让用户使用“CImage.save”保存图像 .. 图像已保存,但设备上下文绘制的线条不存在,这是预期的 .. 但我确实希望它们出现在保存的图像中..
问题是如何让设备上下文对象影响我的 CImage 对象?
这是鼠标按下的事件处理程序
void CProFilterDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
curser =point;
if (draw && Boundry.PtInRect(point) )
{
CDialogEx::OnLButtonDown(nFlags, point);
}
}
当鼠标按钮向上时这个
void CProFilterDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
if (draw && Boundry.PtInRect(curser) && Boundry.PtInRect(point))
{
CClientDC dc(this);
dc.MoveTo(curser);
dc.LineTo(point);
CDialogEx::OnLButtonUp(nFlags, point);
}
}
这是我加载 Cimage 对象的地方
void CProFilterDlg::OnBnClickedBtnBrowse()
{
CFileDialog Browse(true);
if(Browse.DoModal() == IDOK)
{
ImagePath = Browse.GetPathName();
}
image.Load(ImagePath);
}
这是我保存 CImage 的地方
void CProFilterDlg::OnBnClickedSave()
{
CFileDialog Save(true);
if(Save.DoModal() == IDOK)
{
ImagePath = Save.GetPathName();
}
image.Save(ImagePath,Gdiplus::ImageFormatBMP);
}
【问题讨论】:
-
您是如何获得 DC 的?您没有显示任何相关代码。
-
我已编辑帖子以显示我的 DC
标签: c++ bitmap mfc drawing gdi