zoukankan      html  css  js  c++  java
  • Win32 GDI 在内存中绘制彩色的位图

    Wind32 GDI在内存中绘制彩色位图

    1创建兼容的内存DC

    hPicture为创建的静态文本框控件句柄

    LRESULT OnPaint(HWND hWnd)
    {
        
    
        PAINTSTRUCT ps;
        HDC hdc = ::BeginPaint(hWnd, &ps);
    
        //1.创建静态文本框控件DC
        HDC hPictureDc = GetDC(hPicture);
    
        //2.创建和窗口DC兼容的内存DC,    
        HDC hMenDc = CreateCompatibleDC(hdc);

    //3.创建内存位图
    //这要注意,如果创建和内存DC兼容的位图就只有黑白色,不会有彩色
    //所以要创建实际对象DC.窗口DC或静态控件DC兼容的内存位图

        HGDIOBJ hBitmap = CreateCompatibleBitmap(hdc, 500, 400);
    
        //把位图选入内存DC中
        HGDIOBJ hOldBitmap = SelectObject(hMenDc, hBitmap);
    
        //给内存填充一个白色的背景色,如不填充背景色为黑色
        RECT rect = { 0,0,500,400 };
        FillRect(hMenDc, &rect,(HBRUSH) GetStockObject(WHITE_BRUSH));
    
        //绘制你要绘制的位图
        DrawBitmap(hMenDc, 500, 400);
    
        //把内存DC中的位图复制到静态控件上显示出来
        //我这是缩放复制,原样复制可以用BiBlt函数
        StretchBlt(hPictureDc, 0, 0, 300, 200, hMenDc, 0, 0, 500, 400, SRCCOPY);
        
        //释放GDI对象资源
        
        SelectObject(hMenDc, hOldBitmap);
        DeleteObject(hBitmap);
        DeleteDC(hMenDc);
        DeleteDC(hPictureDc);
    
        EndPaint(hWnd, &ps);
        return LRESULT();
    }


    这是不填充背景色的效果

    这是填充背景色为白色的效果

    这是创建内存位图时选的内存DC兼容的效果

    签名:GreenLeaf1976
  • 相关阅读:
    1-7周成绩总结
    1-6周成绩总结
    第七周学习笔记
    前五周测验成绩总结
    第六周学习笔记
    第五周学习笔记
    2018-2019-2 20189206 Python3学习
    2018-2019-2 20189206 安全工具的学习
    2018-2019-2 20189206 《网络攻防实践》 第一周作业
    2018-2019-1 20189206 《Linux内核原理与分析》第九周作业
  • 原文地址:https://www.cnblogs.com/greenleaf1976/p/14723470.html
Copyright © 2011-2022 走看看