VC绘制控件如何防止闪烁

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC绘制控件如何防止闪烁相关的知识,希望对你有一定的参考价值。

理论上不管什么控件都适用,方法如下:

新建一个MFC类,继承原来的控件类型,对于VC自动生成的类进行如下改动:

 

首先覆盖 OnEraseBkgnd() 防止擦除时填涂背景:

BOOL CXXXCtrl::OnEraseBkgnd(CDC* pDC)
{
    return TRUE;
}

 

 

然后覆盖 OnPaint(),原理是先在内存DC中绘图,之后再一股脑将画出的东东填涂到窗体上。

 

复制代码
代码
void CXXXCtrl::OnPaint()
{
    CPaintDC dc(this);
    // TODO: 在此处添加消息处理程序代码
    CRect rect;
    CRect headerRect;
    CDC dcMem;    //内存DC
    CBitmap bmpMem;

    GetClientRect(&rect);
    dcMem.CreateCompatibleDC(&dc);
    bmpMem.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
    dcMem.SelectObject(&bmpMem);
    dcMem.FillSolidRect(&rect, RGB(255,255,255));

    //这一句是调用默认的OnPaint(),把图形画在内存DC上
    DefWindowProc(WM_PAINT, (WPARAM)dcMem.m_hDC, (LPARAM)0);

    //输出
    dc.BitBlt(0,
        0,
        rect.Width(),
        rect.Height(),
        &dcMem,
        0,
        0,
        SRCCOPY);
    dcMem.DeleteDC();
    bmpMem.DeleteObject();
}
复制代码

 

http://www.cnblogs.com/ddgg/archive/2010/07/16/1779131.html

以上是关于VC绘制控件如何防止闪烁的主要内容,如果未能解决你的问题,请参考以下文章

winform绘制闪烁 前台有个线程隔一秒给控件赋值,控件就开始闪烁,如何处理

防止控件闪烁

绘图时防止闪烁

winform 界面加载闪烁问题

在winform画了一个自定义控件,现在我要在运行后进行拉伸动态改变大小,但快速拉伸就闪烁,怎么消除

更新标题时如何防止UIButton闪烁