现在的位置: 首页 > 综合 > 正文

为何DC画出来是黑白的

2013年05月09日 ⁄ 综合 ⁄ 共 460字 ⁄ 字号 评论关闭

在用内存DC来做双缓存消除闪烁的时候,通常做法是三步走:

    mem_hdc=CreateCompatibleDC(present_hdc);
    m_bitmap=CreateCompatibleBitmap(mem_hdc,m_view_width,m_view_height);
    SelectObject(m_hdc,m_bitmap);
这时就会发现当BitBlt到present_hdc的时候,图像是黑白的,明显,问题出在了bitmap上,原因在于第二行的第一个参数,在使用CreateCompatibleDC创建DC的时候,new_hdc可能在内部数据上多少有所缺失,导致以此为基准创建的bitmap有问题,应该以原始的present_hdc为基准创建,改成

    m_bitmap=CreateCompatibleBitmap(present_hdc,m_view_width,m_view_height);

问题得以解决。至于为什么CreateCompatibleDC得来的DC会有问题,我也没有深入研究。

抱歉!评论已关闭.