当前位置: 首页 > 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自动化实战和讲解...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...