为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

闪屏问题

2017-11-15 3页 doc 13KB 14阅读

用户头像

is_281650

暂无简介

举报
闪屏问题闪屏问题 闪屏问题的处理方案: 为了美化窗口界面,通过在View类里重载OnDraw()函数来修改背景图片。但是进入主窗口后, 拖动或最小最大化窗口时,会出现闪屏,本人通过实验,感觉以下方法简单且可行,很适合新手。 因此,现整理一下,与大家共享! 出现闪屏的原因:我们绘图的时候,大都是在View类中,重载OnDraw()或OnPaint()函数。 OnDraw在进行屏幕显示时时由OnPaint进行调用的。当窗口进行重绘是,总是先用背景色将显示 区清除,然后才调用 OnPaint,而背景色往往与绘图内容 反差很大,...
闪屏问题
闪屏问 闪屏问题的处理: 为了美化窗口界面,通过在View类里重载OnDraw()函数来修改背景图片。但是进入主窗口后, 拖动或最小最大化窗口时,会出现闪屏,本人通过实验,感觉以下简单且可行,很适合新手。 因此,现整理一下,与大家共享! 出现闪屏的原因:我们绘图的时候,大都是在View类中,重载OnDraw()或OnPaint()函数。 OnDraw在进行屏幕显示时时由OnPaint进行调用的。当窗口进行重绘是,总是先用背景色将显示 区清除,然后才调用 OnPaint,而背景色往往与绘图内容 反差很大,这样在短时间内背景色与显 示图形就会交替出现,使得显示窗口看起来在闪。如果将背景色 设置成NUll,这样无论怎样重绘 图形都不会闪了。当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制 的图形进行清除,而又叠加上了新的图形。 具体的解决方案: 首先当然是去掉MFC提供的背景绘制过程了。这里介绍一种简单而又实用的方法:即通过在View 类中,重载OnEraseBkgnd(CDC* pDC)函数,返回TRUE。 然后,就是直接在OnDraw()函数中绘图即可。 下面就是具体的代码: void CPROJECTNAMEView::OnDraw(CDC* pDC) { CMPMISDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here ::SetWindowText(GetParent()->m_hWnd,"智能系统");//修改主窗体的名字 CBitmap bmp;;//定义一个位图对象 bmp.LoadBitmap(IDB_MAINBMP);//上传位图,即所要修改为的背景图形 CDC memDC; //首先定义一个显示设备对象 memDC.CreateCompatibleDC(pDC); memDC.SelectObject(&bmp); //获取窗口的大小 BITMAP bmInfo; bmp.GetBitmap(&bmInfo); int width=bmInfo.bmWidth; int heigth=bmInfo.bmHeight; CRect rc; GetClientRect(rc); pDC->StretchBlt(0,0,rc.Width(),rc.Height(),&memDC,0,0,width,heigth,SRCCOPY); //绘图完成后的清理 memDC.DeleteDC(); bmp.DeleteObject(); } BOOL CPROJECTNAMEView::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default return TRUE; //return CScrollView::OnEraseBkgnd(pDC); }
/
本文档为【闪屏问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索