诸位,我从来没有接触过VC中的画图,尤其对图形的重绘比较害怕。我老板给的任务是写一个监测系统,以曲线方式动态显示系统的状态,图中有四个坐标系,每个坐标系中有四个动态的曲线,现在我的动态曲线已经出来了,可是当它最小化或者改变窗口大小或者被别的窗口覆盖再移开时,我画的东西都不见了。
后来才知道有重绘的概念,我手头没有资料,请大家帮忙,听说是要在onpaint或者ondraw里重画,到底用那个?有什么区别?是不是在动态画图的过程中时刻记录窗口中的点的坐标?那么多点时刻要记录下来怎么记啊?
我真是个菜鸟,大家打我吧,一点都不会。
请大家发言帮助我,给我思路也行,有代码当然更好,有例子发
衷心的感谢大家,我会铭记大家对我的帮助。
后来才知道有重绘的概念,我手头没有资料,请大家帮忙,听说是要在onpaint或者ondraw里重画,到底用那个?有什么区别?是不是在动态画图的过程中时刻记录窗口中的点的坐标?那么多点时刻要记录下来怎么记啊?
我真是个菜鸟,大家打我吧,一点都不会。
请大家发言帮助我,给我思路也行,有代码当然更好,有例子发
衷心的感谢大家,我会铭记大家对我的帮助。
解决方案 »
- wfoen failed
- 图像显示的问题
- 谁的VC6经常死
- *****************新手问题来帮忙,dll使用问题*******************
- 动态数据源注册代码添哪啊?请教!!
- 大家帮我看一下这段程序
- 在基于对话框的程序中,加入了toolbar,为什么没有收到ON_UPDATE_COMMAND_UI消息
- IMPLEMENT_DYNCREATE(CEditViewEx, CFormView)//报错位置,没有合适的默认构造函数可用?弄不明白!请高手指教(内附源代码(
- 请问哪有SourceSafe的学习资料?
- 在删除.exe系统会发什么消息呢????
- 请教: 一个Windows消息能否同时被多个不同的消息函数响应?谢谢
- 请教:我现在win2kpro上装了VS.NET,现在可不可以再装vs6?
CRect rc;
GetClientRect(rc);
InvalidateRect(rc);在OnDraw中绘图,在需要刷新的地方调用Invalidate()即可.
CWnd::InvalidateRgn( CRgn* pRgn, BOOL bErase = TRUE );等等
如果在frame/document/view中,还有CDocument::UpdateAllViews( CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL );
如果想高效的重绘,就需要明确需要重绘的区域,然后以合适的函数调用上述函数.
OnSize()函数
invalidate会自动调用OnDraw()函数
窗口大小改变会自动调用OnSize()函数
建议你用OnDraw()
UpdateWindow( )
是会自动来调用OnDraw重绘的
这才是正路。
view 里是OnDraw()
刷新时调用invalidate()
指定区域用invalidateRgn()InvalidateRect()
文档结构的程序可以参考scribble示例