MFC 对话框类中怎么去调用视图类中的OnDraw去重绘视图

独自一人的昵称谁用了 2011-11-17 02:30:27
如题
具体情况是:
本人在对话框类中改变了视图类所要显示图片属性的值,想要在每次值改变时就调用视图类里面的Ondraw函数去重绘视图,如何调用?谢了~~~

...全文
526 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sophyyoung 2011-11-17
  • 打赏
  • 举报
回复
Invalidate 如何?
峰白 2011-11-17
  • 打赏
  • 举报
回复
如果是单文档

CMainFrame *pMainFrame = (CMainFrame*)AfxGetMainWnd();
CXXView *pView = (CXXView*)pMainFrame->GetActiveView();
pView->UpdateWindow();
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bxf19830819 的回复:]

对话框返回后,调用onvalidate()

如果是无模式对话框,取得视图指针然后调用onvalidate或redrawWindow()
[/Quote]
怎么取得视图的指针?不是很清楚,谢了!
  • 打赏
  • 举报
回复
补充一下:
对话框中我用了滑动杆控件,处理函数代码如下:

void CImageDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{
// TODO: 在此添加消息处理程序代码和/或调用默认值..........................................
CSliderCtrl*pSlider=(CSliderCtrl*)pScrollBar;
m_alpha=(100.0-pSlider->GetPos())/100.0;
UpdateData(FALSE);
//UpdateWindow();
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

视图里绘制图片的函数就是OnDraw(),代码如下

void CGdiPlus_ColorView::OnDraw(CDC* pDC)
{
CGdiPlus_ColorDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
if (pDoc->image==NULL)
{
return;
}
dlg=new CImageDlg;
alpha=dlg->m_alpha;
int nWidth=pDoc->image->GetWidth();
int nHight=pDoc->image->GetHeight();

Bitmap bitmap(nWidth,nHight);
Rect rect(0,0,nWidth,nHight);

Graphics temp(&bitmap);//对新图像进行绘制

ColorMatrix colorMartrix={
1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,alpha,0,
0,0,0,0,1};
ImageAttributes imageAttr;
imageAttr.SetColorMatrix(&colorMartrix);
temp.DrawImage(pDoc->image,rect,0,0,nWidth,nHight,UnitPixel,&imageAttr);
Graphics graph(pDC->GetSafeHdc());//获得当前设备的句柄
//Image image(L"E:\\test.bmp");
//Image* image=Image::FromFile(pDoc->imagepath);
// graph.DrawImage(image,0,0);
graph.DrawImage(&bitmap,0,0);

// TODO: 在此处为本机数据添加绘制代码
}


我的意思就是在m_alpha的值每次改变时就调用OnDraw()函数,由于对MFC的这种机制还了解的不够,不知道在对话框中调用OnDraw函数,简单的在对话框类中定义一个视图类的指针,然后利用这个指针调用OnDraw应该是不行的吧?
峰白 2011-11-17
  • 打赏
  • 举报
回复
对话框返回后,调用onvalidate()

如果是无模式对话框,取得视图指针然后调用onvalidate或redrawWindow()
lgstudyvc 2011-11-17
  • 打赏
  • 举报
回复
你以前的图片在哪儿显示(绘)的,修改后,在调用一词

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧