MFC如何刷新绘图区

我写了一个对话框绘函数图的小软件,输入x的上下界然后可以画出函数图像,可是第一次画出图像后,改动x的数值却显示不了新的图像,我不知道要怎么update,button的代码... 我写了一个对话框绘函数图的小软件,输入x的上下界然后可以画出函数图像,可是第一次画出图像后,改动x的数值却显示不了新的图像,我不知道要怎么update,button的代码如下,请高手教我下要加什么东西;
void CTest1Dlg::OnButton1()
{
double a1,a2;
Mm P1,P2;
UpdateData(TRUE);
initM(MATCOM_VERSION);
a1=m_edit1;//得到输入的x上界
a2=m_edit2;//得到输入的x下界
CWnd *p1=NULL;
p1=(CWnd *)GetDlgItem(IDC_PIC);//IDC_PIC是显示图像控件
Mm plothandle=winaxes(p1->m_hWnd);
huatu(a1,a2,i_o,P1,P2);//调用画图函数
UpdateData(FALSE);
exitM();

}
我第一次输入的x的上下界可以得到正确的图像,可是我如果修改了数值,然后再点button,图像没有变化,就是说只能画一次,我不知道为什么呀。。。。
我用了Invalidate();也没用呀
展开
 我来答
shihoumacili
高粉答主

2016-01-07 · 每个回答都超有意思的
知道大有可为答主
回答量:1.1万
采纳率:87%
帮助的人:490万
展开全部
方法如下:

GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
用双缓冲,效果比较好。

微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
WSN石家庄业余球王1
2010-02-09 · TA获得超过1235个赞
知道小有建树答主
回答量:880
采纳率:100%
帮助的人:376万
展开全部
应该是你画图的函数有问题,你这部分看起来是没错的.
updatedata()这个是当参数为TRUE时,得到你控件中的内容,就是比如你的EDIT控件里输入数据后,如果你不UpdateData(),就得不到新输入的.

Button的代码你右键点Button,然后点"属性",然后找"事件",那些是对应的动作,比如单击是Click什么的,在那里面添加对应事件的操作代码就OK了
-------------------------------------------
补充:
把你画图那部分好好看看,估计就是在那的错误
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Acfun老婆指定唯一老公
2015-12-10 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:72%
帮助的人:1016万
展开全部
  1、首先要知道,绘制的图并不是所有都显示了的,例如:在OnDraw中画了两个矩形,在一次重绘中虽然两个矩形的绘制函数都有执行,但是很有可能只有一个显示了,这是因为MFC本身为了提高重绘的效率设置了裁剪区,裁剪区的作用就是:
  只有在这个区内的绘图过程才会真正有效,在区外的是无效的,即使在区外执行了绘图函数也是不会显示的,因为多数情况下窗口重绘的产生大多是因为窗口部分被遮挡或者窗口有滚动发生,改变的区域并不是整个图形而只有一小部分,这一部分需要改变的就是pDC中的裁剪区了。
  因为显示比绘图过程的计算要费时得多,有了裁剪区后显示的就只是应该显示的部分,大大提高了显示效率。
  2、其次,这个裁剪区是MFC设置的,它已经提高了显示效率,在进行复杂图形的绘制时进一步提高效率就只有去掉在裁剪区外的绘图过程了,可以先用pDC->GetClipBox()得到裁剪区,然后在绘图时判断你的图形是否在这个区内,如果在就画,不在就不画,这样做就绘图效率有提高。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bda981f
2010-02-09 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:96.7万
展开全部
如果是整个窗口都要重画用 Invalidate
刷新部分区域用 InvalidateRect

仅是部分区域需要重画,用了 Invalidate,浪费效率,并且显示效果不好。

画图语句要写在 OnPaint 事件里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
滩怒海07
2010-02-09 · TA获得超过210个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:0
展开全部
Invalidate()
试试这个函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luomengji
2010-02-09 · TA获得超过136个赞
知道答主
回答量:208
采纳率:0%
帮助的人:0
展开全部
Invalidate();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式