VC++ HBITMAP保存文件

2023-10-30

请先看下面这段代码:

BOOL SaveBmp(HBITMAP bmp, string path)
{
	FILE* f = fopen(path.c_str(), "wb");
	if (!f)
		return 0;

	BITMAP bmpinfo;
	GetObject(bmp, sizeof(BITMAP), &bmpinfo);
	DWORD dwBmBitsSize = ((bmpinfo.bmWidth * 32 + 31) / 32) * 3 * bmpinfo.bmHeight;

	BITMAPFILEHEADER bf;
	bf.bfType = 0x4D42;
	bf.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwBmBitsSize;
	bf.bfReserved1 = 0;
	bf.bfReserved2 = 0;
	bf.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

	BITMAPINFOHEADER bi;
	bi.biSize = sizeof(BITMAPINFOHEADER);
	bi.biWidth = bmpinfo.bmWidth;
	bi.biHeight = bmpinfo.bmHeight;
	bi.biPlanes = 1;
	bi.biBitCount = 24;
	bi.biCompression = BI_RGB;
	bi.biSizeImage = 0;
	bi.biXPelsPerMeter = 0;
	bi.biYPelsPerMeter = 0;
	bi.biClrUsed = 8;
	bi.biClrImportant = 0;
	
	HDC dc = ::GetDC(NULL);
	BYTE* lpvBits = new BYTE[dwBmBitsSize];
	m
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC++ HBITMAP保存文件 的相关文章

  • OpenGL GLFW入门篇 - 画矩形

    效果图 主体代码 void DrawRectangle void GLfloat xl yt xr yb w h glPushMatrix glLoadIdentity glTranslatef 0 0 0 0 0 f w 1 2 h 1
  • TightVNC H264编解码(二)之硬编码库的编译

    AVCodec codec avcodec find encoder by name nvenc h264 如果是默认的ffmpeg库 返回结果是NULL 看来是不带有硬编码功能的 重新编译分支ffnvcodec 不到半个小时编译完成 返回
  • windows上bug崩溃定位分析(Qt或者VS)

    任何情况下 都不能保证自己写的代码不会发生崩溃 崩溃不可怕 可怕的是无法定位哪里崩溃 特别是客户那边崩溃 开发者这边不崩溃 问题陷入僵局 自从有了下面这个神奇的代码 再也不怕了 以下代码亲自测试没问题 1 如果是在VC 中 那么只需要将下列
  • VC++ CSWDirectoryListCtrl磁盘文件列表

    效果图 头文件定义 CSWDirectoryListCtrl h pragma once include afxwin h include
  • 免费C/C++编译器

    不好意思 等到现在才想到要写这篇文章 怎么说呢 情况是这样的 刚开始我学习C语言时 是想在机器上安装visual c 的 因为Turbo C太古老了 用起来不方便 所以很自然地想安装vc 不过不知道大家有没有发现vc很大 而且有些机子就是安
  • MFC 当列表控件为Report报表形式时,怎样实现修改表格数据

    声明 本文例子是双击任意位置处的表格数据 实现对当前位置的单元格数据进行修改 1 首先是实现在列表控件中显示表格数据 具体代码这里不描述 显示效果如下图 2 现要实现如声明所说的功能 就是双击某个单元格弹出一个对话框输入新值 再用新值去替换
  • Qt 槽函数被执行两次的问题

    在使用vs2015编写QT程序时 偶然发现点击一次button槽函数响应了两次 我起初认为是鼠标问题 特意换了鼠标试试结果还是一样的 所以我就研究了一下 按钮的名字是btn account add 以前我用Qt Creator 给按钮添加槽
  • 最小二乘曲线拟合——C语言算法实现二

    最小二乘曲线拟合 在上一篇博客中我们介绍了最小二乘法的原理 以及代码实现的例子 http blog csdn net beijingmake209 article details 27565125 本次我们再给出一个程序实现的例子 编译环境
  • CWnd和HWND的区别

    所有控件类都是CWnd类的派生类 CWnd的所有成员函数在控件类中都可以使用 在MFC中 CWnd类是一个很重要的类 它封装了Windows的窗口句柄HWND 在Windows编程中 每一个窗口都是有窗口句柄标识的 但是 类CWnd的对象和
  • 如何去掉去掉VC++的安全警告提示

    在用Vc进行进程编写时 你有可能会遇到一大堆的警告 warning C4996 如 warning C4996 This function or variable may be unsafe 原因是VC使用了更加安全的run time li
  • win7安装了vc++6.0打开已保存文件项目就会崩溃

    我用win7安装了vc 6 0的英文完整版 绿色中文版 发现当运行程序时 要打开已保存文件项目就会崩溃 系统对话筐就说 Microsoft R Developer Studio已停止工作 选择调试或者关闭 office 2010 与vc 6
  • CFileDialog 多文件选择注意事项

    当选择文件数量比较多的时候 发现CFileDialog返回文件名并不完整 翻阅MSDN发现文件名长度是有限制的 解决思路 CFileDialog dlgOpen TRUE T txt NULL OFN HIDEREADONLY OFN RE
  • C语言函数操作大全----(超详细)

    fopen 打开文件 相关函数 open fclose 表头文件 include
  • 如何编译火狐浏览器的源代码

    以下摘录于 http zhidao baidu com question 33214960 html 源代码编译安装Firefox linux下 http forums mozine cn index php showtopic 601 W
  • C++ xml库的选择

    自从触及xml文件的读写 一直以来都是用的tinyxml2 接口简单 然而近期项目频繁出错 跟踪调试发现 问题出在了xml文件的读写上 当节点数超过百万级别的时候 内存暴增到G的当量 很显然程序会由于内存申请不足崩掉了 果断寻找替代品 百度
  • 粤嵌GEC6818开发板-入门感慨篇(续一)

    触摸屏的事件 include
  • VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题...

    VC9编译的程序在没有装过VC9 确切的说是 Net Framework3 5 的机器上运行时 如果提示 由于应用程序配置不正确 应用程序未能启动 重新安装应用程序可能会纠正这个问题 这个错误 那么就说明该程序动态链接了VC9的运行时库 如
  • HBITMAP 到 JPEG /PNG,无需 C++ 中的 CImage

    我有一个 HBITMAP 我想将其保存到 JPEG PNG 流或字节数组中 问题是我使用 mingw 作为编译器 所以我不能使用 CImage 这会让我的生活更轻松 我可以毫无问题地从位图中获取像素 但我不知道如何以 JPEG PNG 格式
  • 将 HBITMAP 绘制到分层窗口上。怎么了?

    大家好 美好的一天 我的最终目标是在屏幕上绘制一个包含 Alpha 的 PNG 文件 这意味着不是在自己的窗口中 而是在桌面上的某个位置 将 PNG 加载到 HBITMAP 的部分现在可以工作 以不同的方式进行测试 但我无法做到绘制它 包括
  • 从 QT5 中的 QPixmap 获取 HBITMAP (Windows)

    现在 QPixmap toWinHBITMAP 已被弃用 我找不到从 QPixmap 或 QImage 获取 HBITMAP 的方法 谷歌搜索 我发现有一个名为 qt pixmapToWinHBITMAP 的函数 它似乎可以满足我的需要 但

随机推荐

  • 若依微服务报错Error: Cannot find module ‘html-webpack-plugin‘解决

    遇到的问题 Error Cannot find module html webpack plugin 但是已经有html webpack plugin了 还是提示了报错 解决办法 https gitee com y project RuoY
  • LeetCode每日刷题:合并两个有序数组

    题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中 使合并后的数组同样按 非递减顺序 排列 注意
  • LightGBM原理介绍

    简介 是GBDT模型的一个进化版本 其主要思想是利用弱分类器 决策树 迭代训练以得到最优模型 该模型具有训练效果好 不易过拟合等优点 备注 容易出现过拟合的风险 需要限制树的最大深度来防止过拟合 LGB是一个实现GBDT算法的框架 支持高效
  • Python学习笔记(三)

    文章目录 1 异常 2 单测 3 读写文件 3 1 读文件 3 2 写文件 3 3 操作文件和目录 4 正则表达式 4 1 贪婪匹配 5 其它 5 1 StringIO BytesIO 5 2 序列化 5 2 1 pickle 5 2 2
  • 3D光照阴影 平面阴影矩阵推导及代码实现

    3D光照阴影 平面阴影矩阵推导及代码实现 参考有关知识于是辛苦几个小时 推导出光照 平面阴影转换矩阵见图片 平面阴影矩阵推导第一页 平面阴影矩阵推导第二页 平面阴影矩阵 具体代码实现 第三页 到这里光照阴影的平面矩阵推导结束还有伪代码 参考
  • 如何使用学生账号来激活使用Jetbrains全家桶

    使用 edu邮箱注册学生账号来激活使用JetBrains全家桶 起因 之前激活过Jetbrains家的IDE 升级到2017 3 3版本 提示又要激活 试着原来的方法 结果用来激活的License Server全都失效 据称搭建本地反向代理
  • obj[‘x‘]和obj[x]的区别

    对象数据类型 由零到多组键值对 属性名和属性值 组成的属性名的类型 说法一 属性名类型只能是字符串或者Symbol 说法二 属性名类型可以是任何基本类型值 处理中可以和字符串互通 但是属性名绝对不能是引用数据类型 如果设置引用类型 最后也是
  • Python 爬虫学习笔记(二)urllib下载图片和视频

    一 urllib的1个类型和6个方法 1 response的类型 我们打印一下urllib request方法获取的response是什么类型 import urllib request url http www baidu com res
  • springboot yml文件配置Map List等数据

    springboot yml文件配置Map List等数据 配置类定义 yml 配置 使用 说明 配置类定义 import lombok Getter import lombok Setter import org springframew
  • 007 034 打印一个三角形

    例 使用输出语句输出一个三角形 include
  • 20+个小而精的Python实战案例(附源码和数据)

    公众号 尤而小屋作者 Peter编辑 Peter 大家好 我是Peter 最近小编认真整理了20 个基于python的实战案例 主要包含 数据分析 可视化 机器学习 深度学习 时序预测等 案例的主要特点 提供源码 都是基于jupyter n
  • Java实现扑克牌自动发牌系统

    利用Java的ArrayList实现随机给三个人发扑克牌 import java util ArrayList import java util List import java util Random class Card private
  • Linux 必备工具, 命令与例子

    目录 1 wget 2 screen 3 unzip gzip 4 netstat 5 git 6 composer 7 docker 8 docker compose 9 timedatectl set timezone Asia Sha
  • binfmt_misc

    一 binfmt misc是什么 binfmt misc是内核中的一个功能 它能将非本机的二进制文件与特定的解析器自动匹配起来 进行二进制解析 例如 在x86上解析arm64架构的二进制 通过binfmt misc可以注册解析器来处理指定二
  • JNI GetFieldID和GetMethodID函数解释及方法签名

    1 GetFieldID是得到java类中的参数ID GetMethodID得到java类中方法的ID 它们只能调用类中声明为 public的参数或方法 举例说明 jclass c env gt FindClass env com came
  • nodejs开发环境安装

    安装环境 win7 64位 访问nodejs官网 http nodejs org 点击Download链接 选择Windows Installer 下载安装包 直接安装即可 安装成功后 在命令窗口 cmd node 查看是否成功 若果没有成
  • UART、RS-232、RS-422、RS-485的区别

    v3学院带你一次性认清UART RS 232 RS 422 RS 485的区别 https www cnblogs com laokai p 6488910 html 通讯问题 和交通问题一样 也有高速 低速 拥堵 中断等等各种情况 如果把
  • LBP算法及其改进算法

    LBP LBP指局部二值模式 英文全称 Local Binary Pattern 是一种用来描述图像局部特征的算子 LBP特征具有灰度不变性和旋转不变性等显著优点 它是由T Ojala M Pietik inen 和 D Harwood在1
  • 第二十五章 Chisel进阶——隐式参数的应用

    用Chisel编写的CPU 比如Rocket Chip RISCV Mini等 都有一个特点 就是可以用一个配置文件来裁剪电路 这利用了Scala的模式匹配 样例类 偏函数 可选值 隐式定义等语法 本章内容就是来为读者详细解释它的工作机制
  • VC++ HBITMAP保存文件

    请先看下面这段代码 BOOL SaveBmp HBITMAP bmp string path FILE f fopen path c str wb if f return 0 BITMAP bmpinfo GetObject bmp siz