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
  • 相关阅读:
    商业即生活,一些思考和感悟
    Unity中使用摇杆控制
    在家乡做什么生意比较好?且看雷家第一智囊的分析
    Android5.0之Toobar的使用
    Android5.0常用颜色属性说明
    hiho week 38 P1 : 二分·二分答案
    CCF模拟题 字符串匹配
    CCF模拟题 最优配餐
    CCF模拟题 相反数
    CCF模拟题 最优灌溉
  • 原文地址:https://www.cnblogs.com/greenleaf1976/p/14723470.html
Copyright © 2011-2022 走看看