ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Win32 GDI 在内存中绘制彩色的位图

2021-04-30 22:32:54  阅读:265  来源: 互联网

标签:控件 hMenDc DC 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兼容的效果

 

标签:控件,hMenDc,DC,Win32,内存,创建,GDI,位图
来源: https://www.cnblogs.com/greenleaf1976/p/14723470.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有