内存中的DC操作

这篇博客详细介绍了如何利用内存设备上下文(DC)和兼容位图进行无闪烁的图形绘制,通过创建内存DC,绘图到内存位图,然后使用BitBlt函数将内容复制到屏幕,避免了多次屏幕重绘导致的闪烁问题。示例中包括了填充背景、绘制椭圆和线条等操作。
摘要由CSDN通过智能技术生成


    CRect rcClient;
    GetClientRect(rcClient);  

    HDC hdc = ::GetDC(m_hWnd) ; 

    // 定义一个内存显示设备上下文对象
    HDC MemDC; 

    // 定义一个GDI位图对象
    HBITMAP MemBitmap;

    // 创建一个与指定设备(这里是屏幕)兼容的内存设备上下文环境(DC)         
    MemDC = ::CreateCompatibleDC(hdc);  

    // 建立一个与屏幕显示兼容的位图,位图的大小可选用窗口客户区的大小  
    MemBitmap= ::CreateCompatibleBitmap(hdc, rcClient.Width(), rcClient.Height()); 

    // 将位图对象选入到内存显示设备上下文中,只有选择了才能进行绘图      
    //CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap);         
    HGDIOBJ pOldBit = ::SelectObject(MemDC,MemBitmap);         

    // 先用白色背景色将位图清除干净,否则是黑色。  
    ::FillRect(MemDC,rcClient, (HBRUSH)GetStockObject(WHITE_BRUSH)); 

    // 定义画笔,颜色为灰色
    CPen pen(PS_SOLID, 1, RGB(178,178,178));
    CPen* pOldPen = NULL;

    // 把画笔对象选定到指定的设备上下文环境中
   HGDIOBJ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值