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兼容的效果

Win32 GDI 在内存中绘制彩色的位图的更多相关文章

  1. 如何将内存中的位图数据绘制在DC上

    假如你定义了一个位图类,里面包含位图头,位图信息头,调色板,位图数据.然后你按照位图的格式将位图文件读入你的类中,现在你知道了位图的全部信息了.主要信息包含在位图信息头里面,数据则在位图数据缓冲里面. ...

  2. iOS之在内存中绘图

    与直接在UIView控件上绘图不同,在内存中绘图时,需要开发者自己准备绘图环境,Quartz 2D提供了一个非常便捷的函数:UIGraphicsBeginImageContext(CGSize siz ...

  3. 怎么用ChemDraw 15.1 Pro绘制彩色结构

    ChemOffice 15是最新的ChemDraw化学工具套件,合理的使用这套软件可以大幅度的提高研究人员的工作效率.也有一些化学老师使用这套化学绘图软件教学,其可以绘制彩色结构有效增强教案说服力并吸 ...

  4. Win32 GDI 非矩形区域剪裁,双缓冲技术

    传统的Win32通过GDI提供图形显示的功能,包括了基本的绘图功能,如画线.方块.椭圆等等,高级功能包括了多边形和Bezier的绘制.这样app就不用关心那些图形学的细节了,有点类似于UNIX上的X- ...

  5. (续)一个demo弄清楚位图在内存中的存储结构

    本来续---数字图像处理之位图在计算机中的存储结构一文,通过参考别人的代码,进行修改和测试终于成功运行. 该实例未使用任何API和相关类,相信如果对此实例能够完全理解那么将有进一步进行数字图像处理的能 ...

  6. vs中调试程序查看变量在内存中的内容的方法

    vs中调试程序 查看变量在内存中的内容的方法 https://blog.csdn.net/guojg1988/article/details/42922149 原文链接:http://www.sows ...

  7. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https:/ ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制 代码工程地址: https://gi ...

  9. 在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区

    在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? 1 为什么要有Survivor区 先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪 ...

  10. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

随机推荐

  1. GIS数据获取:土地利用与土壤属性、DEM、水体水系数据

      本文对目前主要的土壤属性.地表覆盖.数字高程模型与水体水系矢量数据获取网站加以整理与介绍.   本文为"GIS数据获取整理"专栏中第三篇独立博客,因此本文全部标题均由" ...

  2. P2467 [SDOI2010] 地精部落 学习笔记

    DP 显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了 发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度\(j\)的答案,然 ...

  3. 请查收“国产化率认证报告”(100%)——RK3568J工业核心板

    创龙科技RK3568J核心板获得"100%国产化"认证日前,创龙科技"国产化率100%认证"的核心板再添一员!RK3568J工业核心板(SOM-TL3568)获 ...

  4. VS License Header Manager 插件

    /************************************************************************************* * * 文 件 名: %F ...

  5. 贝塞尔曲线原理、推导及Matlab实现

    贝塞尔曲线原理.推导及Matlab实现 贝塞尔曲线原理.推导及Matlab实现 一.简介 贝塞尔曲线提出 在数学的数值分析领域中,贝塞尔曲线(English:Bézier curve)是计算机图形学中 ...

  6. 欢迎访问pycharm 每次开启时都显示

    文件->设置->外观与行为->系统设置->将"启动时重新打开项目"前的勾去掉

  7. .NET开源、简单、实用的数据库文档生成工具

    前言 今天大姚给大家分享一款.NET开源(MIT License).免费.简单.实用的数据库文档(字典)生成工具,该工具支持CHM.Word.Excel.PDF.Html.XML.Markdown等多 ...

  8. 常用ffmpeg命令集合(收藏吧,帮你省一个录屏软件的会员费)

    录制屏幕: 全屏的话用screen-capture-recoder下载地址:https://github.com/rdp/screen-capture-recorder-to-video-window ...

  9. 浅谈 MySQL 连表查询

    浅谈 MySQL 连表查询 连表查询是一把双刃剑, 优点是适应范式, 减少数据冗余; 缺点是连表查询特别是多张表的连表会增加数据库的负担, 降低查询效率. 简介 连表查询就是 2 张表或者多张表的联合 ...

  10. 使用MySQL实现分布式锁

    分布式锁开发中经常使用,在项目多节点部署或者微服务项目中,JAVA提供的线程锁已经不能满足安全的需求,需要使用全局的分布式锁来保证安全:分布式锁的实现的方式有很多种,最常见的有zookeeper,Re ...