当前位置: 首页 > news >正文

CBitmap、CreateCompatibleBitmap、CreateBitmap

一、CBitmap类主要是加载位图资源,或者建立一个空白位图用于存储画面

BOOL LoadBitmap(UINT nIDResource)从工程资源中加载一张位图
BOOL LoadOEMBitmap(UINT nIDBitmap)从系统资源中加载一张位图
BOOL CreateBitmap(int nWidth, int nHeigjt, UINT nPlane, UINT nBitCnt, const void* lpBits)根据指定的值创建一张位图
BOOL CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight)根据高宽创建一张兼容位图
BOOL CreateBitmapIndirect(LPBITMAP lpBitmap)根据BITMAP结构体创建一张空白位图
int GetBitamp(BITMAP* pBitmap)根据BITMAP结构体获取位图属性信息
static CBitmap* FromHandle(HBITMAP hBitmap)将HBITMAP句柄转换为CBitamp对象
operator HBITMAP() const从CBitmap对象中获取HBITMAP句柄

BITMAP结构体:

/* Bitmap Header Definition */
typedef struct tagBITMAP{LONG        bmType;LONG        bmWidth;LONG        bmHeight;LONG        bmWidthBytes;WORD        bmPlanes;WORD        bmBitsPixel;LPVOID      bmBits;} BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;

二、兼容位图CreateCompatibleBitmap和非兼容位图CreateBitmap的区别

兼容位图即DDB,由CreateCompatibleBitmap创建;

非兼容位图即DIB,是由LoadImage、SHLoadBitmap、CreateDIBSection、CreateBitmap创建。

1.非兼容位图 和 兼容位图有两个本质差别
第一个区别:是兼容位图的存放空间通常由GWES或显示驱动分配,处于驱动层之中,可以获取到存放数据的物理地址,而非兼容位图的存放空间通常由应用程序分配,处于应用层中,不能获取到物理地址。
第二个区别:是兼容位图与显示驱动的位深和像素格式保持一致(WinCE显示驱动的位深和格式是固定的),如显示驱动采用的是16位RGB565的位深和像素格式,则兼容位图的格式也一样,而非兼容位图通常不相同,即它内部可能是32位位深ARGB的格式,也有可能是24位RGB888的格式。

2.以上两个区别意味着
第一个区别意味着:非兼容位图无法享受2D显示模块的硬件加速,硬件加速的原理类似DMA,需要物理地址,而非兼容位图获取不到物理地址,自然无法进行硬件加速。
第二个区别意味着:非兼容位图拷贝到显示界面上往往需要进行颜色转换,因为它要符合显示驱动的颜色格式才能正常地显示出来,常用的位图格式是24位RGB888,而显示驱动常用的格式是16位RGB565、32位ARGB8888,自然免不了转换,这部分工作都是在显示驱动中进行的,如果仅有一两次转换或少量像素的转换可能不会有什么,但如果是大量的绘图操作,意味着每次拷贝都会进行转换,这将把宝贵的系统资源消耗在位图的转换上。

相关文章:

CBitmap、CreateCompatibleBitmap、CreateBitmap

一、CBitmap类主要是加载位图资源,或者建立一个空白位图用于存储画面。 BOOL LoadBitmap(UINT nIDResource)从工程资源中加载一张位图BOOL LoadOEMBitmap(UINT nIDBitmap)从系统资源中加载一张位图BOOL CreateBitmap(int nWidth, int nHeigjt, UINT nPlane, UINT n…...

亲测好用教师小程序

作为一名老师,经常需要面对的一大挑战就是如何有效地向学生和家长传达重要的学业信息。而其中,成绩的发布与查询更是重中之重。传统的做法是手动录入数据,或者通过电子邮件发送Excel表格,这样做既繁琐又耗时。幸运的是&#xff0c…...

第十五章:输入输出流I/O

15.1:输入/输出流 文件类:File 字节流:InputStream:入 OutputStream:出 字符流:Reader:入 Writer:出 15.1.1 输入流 InputStream类是字节输入流的抽象类,所有字节流…...

docker命令实例(举例子学习)

docker命令实例 实例1 docker build -t linksoul/chinese-llama2-chat .实例2 docker run --gpus all --ipchost --ulimit memlock-1 --ulimit stack67108864 --rm -it -v pwd/LinkSoul:/app/LinkSoul -p 7860:7860 linksoul/chinese-llama2-chat实例3 docker run -it -p 78…...

excel常用函数

vlookup函数 ISNA函数 ISNA(value) ISNA 函数用于检查指定的值是否为 #N/A 错误值,并返回 TRUE 或 FALSE。 IF 函数 IF(条件, 如果条件为TRUE的值, 如果条件为FALSE的值)...

使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具,可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…...

Git快速安装【附安装包资源】

软件安装包 项目版本管理软件 Git windows版本安装包 安装步骤 双击按照包之后,直接next 安装位置尽量不要选择C盘,如果只有C盘,可以尝试分盘,如果C盘已经很小了,那就没办法了 选择完安装位置之后,直…...

算法进修Day-33

算法进修Day-33 65. 有效数字 难度:困难 题目要求 有效数字(按顺序)可以分成以下几个部分: 一个 小数 或者 整数(可选)一个 e 或 E ,后面跟着一个 整数 小数(按顺序)…...

开发工具分享 - Mybatis SQL日志格式化H5

目录 一、 序言二、代码示例三、部署至Nginx 一、 序言 平时通过IDEA开发,可以直接装相关MybatisLogFormat的插件直接对控制台里的Mybatis SQL日志进行格式化。一旦离开本地环境,到了测试或者线上,就得自己手动拼参数了。 简单的SQL还好&am…...

好用的办公软件有哪些

日常的工作难免和各种各样的软件打交道,除了传统的Office三件套,小编日常还在用着其他的办公软件,借此跟各位分享其中比较好用、堪称办公神器的8款软件! 1.WPS office 2.office2007 3.EasyConnect 4.ToDesk 5.Photoshop 6.A…...

C#中Abstract、Virtual和Override的使用方法

在C#中,abstract、virtual和override是用于处理类和方法的三个重要关键字,它们的用途和用法如下: Abstract(抽象) 抽象方法是一种只有声明而没有实现的方法。抽象方法只定义了方法的名称、返回类型和参数列表&#x…...

mac电脑安装雷蛇管理软件,实现调整鼠标dpi,移动速度,灯光等

雷蛇官网只给了win版本驱动 mac版本驱动到这里下载: GitHub - 1kc/razer-macos: Color effects manager for Razer devices for macOS. Supports High Sierra (10.13) to Monterey (12.0). Made by the community, based on openrazer. 安装后会显示开发者不明,请丢弃到垃圾桶.…...

Oracle 19c OCM讲义课程:应用SQL执行计划基线的案例

使用SQL执行计划基线可以保证SQL的性能不下降,但实际生产中默认没有开启,这里是姚远老师在给OCM的学员授课中关于SQL执行计划基线的一个案例,大家可以借鉴一下。 关于号主,姚远: Oracle ACE(Oracle和MyS…...

什么是 EDI 857?

EDI 857 的中文含义是装运和账单通知,主要用于供应商传递装运信息和提供采购发票。一个 EDI 857 需要包含与某个具体订单相关联的必要的装运和发票信息,主要包含的业务信息如下: 采购订单编号供应商和买方联系信息产品数量、价格以及诸如 UP…...

OJ项目【登录】——验证码、失败登录多次账户冻结、用户密码加密,我是如何实现的?

目录 前言 1、验证码 1.1、引入pom 1.2、前端核心代码 1.3、后端核心代码 2、账户冻结 2.1、思路: 2.2、核心代码示例: 3、密码加密——加盐算法 3.1、思路: 3.2、代码实现示例: 4、小结:展示我的项目 4…...

js鼠标点击添加图标并获取图标的坐标值

给这个图片添加摄像头图标,并获取图标的坐标值,也就是图标的css样式是positon:absolute,获取left和top的值。 图片1 思路是这样的,获取这里的长度, 图片2 1.鼠标点击时距浏览器的左边距离和上边距离,相当于(0,0)坐标 …...

How to add a jar to a project in eclipse?

Project -> Properties -> Java Build Path -> Libraries -> Add External JARs...

动手实现H5仿原生app前进后退切换效果

动手实现H5仿原生app前进后退切换效果 前言 最近在优化H5页面&#xff0c;我注意到当开发完成的移动端H5页面嵌入到微信小程序或者原生app中时&#xff0c;当触发页面路由切换会与原生app看上去有点格格不入&#xff0c;因为H5页面<router-view>切换路由时是直接替换了…...

【标准化封装 SOT系列 】 D SOT-323 SOT-363

〇、关键词 SC70 。 一、D部分 SOT-323 SOT-363 这个应该叫SC-70可能更合适&#xff0c;典型特征 pin 间距 0.65mm ; body size 2.0mm1.25mm 这一节很像SOT-23&#xff0c;即A部分&#xff0c;因此也是最容易被混淆的。 二、SC70-3 / -5/ -6 鉴于此&#xff0c;封装最好给…...

软件测试肖sir__python之ui自动化实战和讲解03

python之ui自动化实战和讲解...

11111111123

33333333311...

Docker运行AI代码到底安不安全?:3类高危逃逸场景复现+4层加固策略(附可落地的yaml模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker Sandbox 运行 AI 代码隔离技术对比评测报告 在 AI 模型快速迭代与第三方代码频繁集成的背景下&#xff0c;安全可靠的沙箱执行环境成为关键基础设施。Docker 提供的轻量级容器化沙箱机制&#x…...

你的论文“说人话”,评委才听得进去:好写作AI的答辩PPT,不是“做”出来的,是“翻译”出来的

你有没有经历过这种时刻&#xff1a;论文写了五万字&#xff0c;文章查重过了&#xff0c;盲审也过了&#xff0c;导师说“内容很扎实”&#xff0c;你长舒一口气。然后导师补了一句&#xff1a;“下周答辩&#xff0c;你做个PPT。” 完了。 不是不会做PPT&#xff0c;是不知…...

Windows上直接安装APK文件的终极指南:告别笨重模拟器

Windows上直接安装APK文件的终极指南&#xff1a;告别笨重模拟器 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows电脑上使用安卓模拟器时遇到的卡…...

2026年,沸石转轮厂家光卖设备不够,业主还看重什么?

前些年&#xff0c;工厂只要买环保设备&#xff0c;能达标排放就算交差了。但现在环保检查越来越严&#xff0c;运行成本居高不下&#xff0c;设备三天两头出毛病——业主们渐渐发现&#xff1a;光买一台沸石转轮设备远远不够&#xff0c;后续能不能稳定运行、省不省电、厂家管…...

旅行拼团信用程序,团员爽约记录上链,降低组团风险,方便筛选靠谱伙伴。

旅行拼团信用上链系统设计方案一、实际应用场景描述户外徒步俱乐部“山野行者”定期组织跨省长线徒步&#xff08;如川西环线、冈仁波齐转山&#xff09;&#xff0c;需提前30天统计人数并预订包车、高山协作及住宿。近一年出现多次“临出发前48小时内无故退团”事件&#xff0…...

不只是二维码:用Python脚本自动化处理CTF中烦人的循环Base64解密(附完整代码)

突破CTF解题瓶颈&#xff1a;Python自动化处理多层Base64编码实战 在CTF竞赛中&#xff0c;遇到需要反复解码的Base64字符串就像面对一个俄罗斯套娃——每次你以为快要接近核心&#xff0c;却发现还有另一层等待解开。传统的手动复制粘贴到在线工具不仅效率低下&#xff0c;还容…...

Dify工作流实战指南:从场景驱动到生产部署的技术演进

Dify工作流实战指南&#xff1a;从场景驱动到生产部署的技术演进 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-W…...

免费GPU显存稳定性终极测试指南:memtest_vulkan 5分钟快速上手

免费GPU显存稳定性终极测试指南&#xff1a;memtest_vulkan 5分钟快速上手 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 你是否曾经遇到游戏崩溃、图形渲染错…...

TVBoxOSC:5分钟快速搭建电视盒子管理平台终极指南

TVBoxOSC&#xff1a;5分钟快速搭建电视盒子管理平台终极指南 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库&#xff0c;用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC 你是否想让家里的旧电视盒子焕发新…...