• 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
  • 相关阅读:
    FORM内置系统变量
    linux简单命常用令
    详解EBS接口开发之库存事务处理-物料批次导入
    TRIZ系列-创新原理-5-合并原理
    《Master Opencv...读书笔记》非刚性人脸跟踪 IV (终)
    Echarts折线图
    Redis命令学习-SortedSet(有序集合)
    tky项目第③个半月总结
    Torrent 文件图文解析
    ofbiz SSO 单点登录
  • 原文地址:https://www.cnblogs.com/greenleaf1976/p/14723470.html
Copyright © 2020-2023  润新知