我正在构建一个MFC c ++应用程序,在该应用程序中,我让用户读取图像,在其上画线然后保存。
所以我有一个“ CImage”对象,称为“ Image”,用户将图像加载到其中。
并且我有一个设备上下文对象,并且能够使用“ 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(即CCLientDC),而不是实际的CImage。您应该从以下位置构建DC
该DC将具有当前选择的位图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句