mfc-MFC 基于对话框的画图问题 OnPaint()函数不解

问题描述

MFC 基于对话框的画图问题 OnPaint()函数不解

我在对话框中插入了一个tab control,用来画两个曲线图,其中一个是直接在界面上画的,用Moveto和Lineto函数,但是为什么我在切换tab控件的时候,那个曲线之前画的图像都没有了,从我切换过去之后重新开始画了呢?麻烦大家啦~

解决方案

Tab切换会重新刷新,绘图内容会清除。
你要保留旧图就应该用绘图缓冲区,先在缓冲区中绘图,输出到界面。
Tab切换时就不用从头绘图,直接把缓冲区输出到界面。

解决方案二:

切换函数可能触发了onpaint函数,把窗口重新刷新了,以前画的就给刷掉了,把绘图重新放在onpaint每次刷新就重画,这样以前的就会显示了。 view类的ondraw函数是这样,所以可能是这个原因。

解决方案三:

切换tab的时候,OnPaint也跟着换了,之前的绘图就没有了吧。
你所有的绘图都放到每个tab页面的OnPaint中

解决方案四:

因为你把图绘制到control的设备场景中,但是设备场景失效后在必要时会被系统刷新,系统通过DefWindowProc处理WM_PAINT重画control,也就是mfc里的OnPaint,所以你应该在这个里面画,同时不让系统再画了,这样control每次重画都会画上你的图,这样你的图就“一直存在了”

解决方案五:

MFC中的Invalidate、OnDraw、OnPaint函数的作用、区别和联系

时间: 2024-12-04 22:24:19

mfc-MFC 基于对话框的画图问题 OnPaint()函数不解的相关文章

mfc-用VS2010.。里MFC编程基于对话框动态绘图的问题

问题描述 用VS2010..里MFC编程基于对话框动态绘图的问题 主要是3个问题(注意是VS2010!!) 我初学MFC 我想要主要实现的功能是 在对话框里添加背景图 并在背景图上动态根据坐标画线,并且图和线都随着对话框大小的改变对应按比例改变..1.在我的绘图过程中 最后一段线 就是从N-1到N段 没有画出来 我这里取的是N=12段 共13个点,只有拖拽或者最大化对话框的时候才出现..:2.每当画完(不包括缺失的最后一段)时,会出现一个从原点到N-1点的直线(我本意的线可以从坐标点里看出),并

位图显示-MFC中OnPaint函数显示BMP图片的问题

问题描述 MFC中OnPaint函数显示BMP图片的问题 为什么我在MFC对话框中,在OnPaint函数中加入以下代码,BMP图像不能显示啊~~· BITMAP bm; CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CDC memdc; CDC dc; memdc.CreateCompatibleDC(&dc);/ bmp.GetBitmap(&bm); CBitmap *bmpold=memdc.SelectObject(&bmp);/ dc

mfc 动态创建窗口-一个CWnd对象的onpaint函数中,动态Create两个子窗口时造成wincore.cpp中的断言错误。

问题描述 一个CWnd对象的onpaint函数中,动态Create两个子窗口时造成wincore.cpp中的断言错误. 一个对话框子类CViewDlg 在onpaint函数中需要再动态创建两个子窗口 void CViewDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 CRect rect; GetClientRect(&rect); m_wnd1->Create

MFC基于对话框模式下使用鼠标在Text Control控件中画图

问题描述 MFC基于对话框模式下使用鼠标在Text Control控件中画图 想在MFC对话框的Text Control控件窗口中用鼠标画图,但是没有反应.我是自己添加了OnLButtonDown和OnLButtonUp函数. void CKdu_CompressDlg::OnLButtonDown(UINT nFlags,CPoint point) { CWnd *pWnd=GetDlgItem(IDC_STATIC_IMG); HWND hwnd=pWnd->GetSafeHwnd(); m

MFC中改变对话框背景的几个消息函数OnEraseBkgnd、 OnPaint、 OnCtlColor的调用顺序

设置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示时调用OnSize()->OnEraseBkgnd(),->OnPaint()->OnCtlColor(), 若想改变对话框大小,比如全屏显示ShowWindow(SW_SHOWMAXIMIZED);UpdateWindow(); 其中 ShowWindow会调用OnSize()->OnEraseBkgnd(),         UpdateWin

直接执行-C++MFC基于对话框问题

问题描述 C++MFC基于对话框问题 我想让对话框一打开就直接执行命令,而不用去点按钮控件,请问代码写在哪? 解决方案 在生产代码的App 的InitInstance() 对话框类的构造函数 对话框类的OnInitDialog() 解决方案二: 在对话框的OnInitDialog()函数中

接触VC之三:MFC基于对话框程序

最近,本人赶时髦,装上了一套Visual Studio.net,安装要2213M呢,硬盘上三个盘符总共剩下不足2G的地方了.不过,界面相当的漂亮,且功能强大,值得心慰.我终于可以在类视图上,尽情去看类的基类,以及基类的实现代码了.不仅如此,最好的是那附带的MSDN上所有的VC基础文章都是中文,翻译的比希望出版社的好得没的说.什么文档啊,框加窗口啊,多视图啊,应有尽有.所以建议大家都来用.net的吧,注意是要那七张盘的,三张的是beta版,VC功能不全的. 这部分该说一说MFC的具体程序了.因为我

事件 位图-VC/MFC 基于对话框程序,在主界面上左侧有五副位图,单击位图1覆盖原主界面,显示一个另一个界面

问题描述 VC/MFC 基于对话框程序,在主界面上左侧有五副位图,单击位图1覆盖原主界面,显示一个另一个界面 2C VC/MFC 基于对话框程序,在主界面上左侧有五副位图,单击位图1覆盖原主界面,显示自定义1的界面,同理单击位图2显示自定义2的界面,用代码如何实现,请各位指教.

堆破坏-基于对话框的MFC问题,在构造中new一个对象,在析构中释放,竟然可以出错!

问题描述 基于对话框的MFC问题,在构造中new一个对象,在析构中释放,竟然可以出错! class CMilesight_Intelligence_AlgorithmDlg : public CDialogEx { public: CIpCamera *m_ip_camera;//已经定义好的一个类库 } CMilesight_Intelligence_AlgorithmDlg::CMilesight_Intelligence_AlgorithmDlg(CWnd* pParent /*=NULL