void CModelDlg::OnBnClickedOpen()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST |OFN_HIDEREADONLY,_T("图片文件(*.bmp; *.jpg)|*.bmp; *.jpg|所有文件(*.*)|*.*||"),NULL);
if(dlg.DoModal()==IDOK)
{
m_strFilePath=dlg.GetPathName();//获取路径,并显示在编辑框中
FileName=dlg.GetFileName();
pWnd=GetDlgItem(IDC_OriginPic);
CDC *pDC=pWnd->GetDC();//取得控件CDC句柄 //装载位图
CxImage image1(FileName,GetTypeFromFileName((LPTSTR)(LPCSTR)m_strFilePath));
hbitmap=image1.MakeBitmap(0);
bitmap.Attach(hbitmap); //将载入的位图与bitmap关联起来 pWnd->GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(pDC); //创建与pDC兼容的设备上下文
dcMem.SelectObject(&bitmap); //将位图对象选入设备上下文
bitmap.GetBitmap( &BM );
pDC->SetStretchBltMode(COLORONCOLOR);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,BM.bmWidth,BM.bmHeight,SRCCOPY);
bitmap.Detach(); //分离关联的位图对
bitmap.DeleteObject();
}
UpdateData(FALSE);
}
上面这个函数是点对话框上的打开按钮,将图片显示在静态文本控件IDC_OriginPic上
下面一步我要对图片做处理,在响应对话框上处理按钮的函数中进行了处理之后,我想再将处理的图片显示在另一个静态文本控件IDC_PROCESSPIC上
void CModelDlg::OnBnClickedProcess()
{
// TODO: 在此添加控件通知处理程序代码
SalientImage s;
CFileFind finder;
if(!finder.FindFile(FileName))
{
MessageBox("文件不存在!");
return;
}
if(s.FormCxImageObject(FileName)) //图像处理
{
if(s.FormResizeObject()) //图像处理
{
// MessageBox(FileName);
//想要在处理完之后在此实现显示,该怎么做?
}
else
MessageBox("Resize fail!");
}
else
MessageBox("FormBitmap fail!");
}高手帮帮忙吧
第一个函数中 创建了一个CxImage的对象image1.我想要再创建一个对象image2,如果下面还有第三个函数做处理,我想要在image2的基础上进行处理,就这个意思
该怎么实现啊?
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST |OFN_HIDEREADONLY,_T("图片文件(*.bmp; *.jpg)|*.bmp; *.jpg|所有文件(*.*)|*.*||"),NULL);
if(dlg.DoModal()==IDOK)
{
m_strFilePath=dlg.GetPathName();//获取路径,并显示在编辑框中
FileName=dlg.GetFileName();
pWnd=GetDlgItem(IDC_OriginPic);
CDC *pDC=pWnd->GetDC();//取得控件CDC句柄 //装载位图
CxImage image1(FileName,GetTypeFromFileName((LPTSTR)(LPCSTR)m_strFilePath));
hbitmap=image1.MakeBitmap(0);
bitmap.Attach(hbitmap); //将载入的位图与bitmap关联起来 pWnd->GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(pDC); //创建与pDC兼容的设备上下文
dcMem.SelectObject(&bitmap); //将位图对象选入设备上下文
bitmap.GetBitmap( &BM );
pDC->SetStretchBltMode(COLORONCOLOR);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,BM.bmWidth,BM.bmHeight,SRCCOPY);
bitmap.Detach(); //分离关联的位图对
bitmap.DeleteObject();
}
UpdateData(FALSE);
}
上面这个函数是点对话框上的打开按钮,将图片显示在静态文本控件IDC_OriginPic上
下面一步我要对图片做处理,在响应对话框上处理按钮的函数中进行了处理之后,我想再将处理的图片显示在另一个静态文本控件IDC_PROCESSPIC上
void CModelDlg::OnBnClickedProcess()
{
// TODO: 在此添加控件通知处理程序代码
SalientImage s;
CFileFind finder;
if(!finder.FindFile(FileName))
{
MessageBox("文件不存在!");
return;
}
if(s.FormCxImageObject(FileName)) //图像处理
{
if(s.FormResizeObject()) //图像处理
{
// MessageBox(FileName);
//想要在处理完之后在此实现显示,该怎么做?
}
else
MessageBox("Resize fail!");
}
else
MessageBox("FormBitmap fail!");
}高手帮帮忙吧
第一个函数中 创建了一个CxImage的对象image1.我想要再创建一个对象image2,如果下面还有第三个函数做处理,我想要在image2的基础上进行处理,就这个意思
该怎么实现啊?
1: 想要在处理完之后在此实现显示,该怎么做? 这个和image1的实现一样就可以了啊
2:第一个函数中 创建了一个CxImage的对象image1.我想要再创建一个对象image2,如果下面还有第三个函数做处理,我想要在image2的基础上进行处理,就这个意思该怎么实现啊? 你想问什么?
你前面那个函数中会显示后面的就不会了?
兼容DC中处理好后 贴到那个控件上?
dc.BitBlt();
[email protected]
谢谢您。
第一个传递的是文件名,可是如果后来要显示,应该显示的是处理完之后的,所以不能传递文件名了该怎么做啊?
高手写个显示程序吧