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

C++图片保存,加载(LoadImage()),编辑,资源句柄(HBITMAP )的使用总结

这段代码是需要在win窗口的程序下使用的,   hWnd这个是窗口的句柄

如果是控制台的话要整个HCD的话用 CreateCompatiblNULL);

创建兼容 DC 功能 (wingdi.h)——》这里有对CreateCompatiblNULL)的解释

PAINTSTRUCT ps;
        HDC dc = BeginPaint(hWnd, &ps);//与下面的配对使用EndPaint//这个配套是在窗口程序里的

{

        //绘制位图
        //创建一个兼容的dc
        HDC hMemDc  = CreateCompatibleDC(dc);

//加载资源图片        

HBITMAP hBitmap = (HBITMAP)LoadImage(gInstance, "02.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

        if (hBitmap)
        {
            //获取图片的宽高
            BITMAP bmp;
            GetObject(hBitmap, sizeof(bmp), &bmp);//将资源句柄放进去拿出图片的宽高信息

            SelectObject(hMemDc, hBitmap);//hMemDc将这个CD绑定进图片的资源句柄里面

//将图片拷贝到设备的dc里面           

 BitBlt(dc, 0, 0, bmp.bmWidth, bmp.bmHeight, hMemDc, 0, 0, SRCCOPY);

//也可以拷贝到图片的CD里面

HDC memDC = CreateCompatibleDC ( hMemDc  );//创建一个与上个图片兼容的CD

HBITMAP memBM = CreateCompatibleBitmap ( hMemDc  , nWidth, nHeight );//创建一个与上个图片兼容的位图

SelectObject ( memDC, memBM );将新建的CD(memDC )绑定到新的位图上

//将上个位图拷贝到新建的位图memDC里可以设置坐标,;拼接图片也可以用这个

BitBlt(memDC , 0, 0, bmp.bmWidth, bmp.bmHeight, hMemDc, 0, 0, SRCCOPY);


        }
        
        DeleteDC(hMemDc);

}
        EndPaint(hWnd, &ps);

以上是C的处理方式

有个类叫“CImage”类,好东西价格头文件atlimage.h就能用

CImage 类 | Microsoft Docs

CImage tt;

tt 就等于是HBITMAP(资源句柄)可以这样写

tt=CreateCompatibleBitmap ( hMemDc  , nWidth, nHeight );

tt.GetCD();

然后直接 tt.Save(L"new.jpg");就可以保存成图片,直接在后缀改成.png就是png图片了

是不是很方便?赶快感谢我吧

可惜这个不支持tif,但是,作为一个程序元,这是事儿吗?

这是事儿!

找了好几天,终于找到能搞tif后缀的代码了,就是我发表的另外一篇关于TIFF的,用GDI+弄得

但是没法整到内存里,只能保存到磁盘里。。。(因该是我不会)

经过目不转睛地看GDI+的方法,终于找到了一个获取资源句柄的方法了。。虽然找不到HCD,但找到这个也行啦,利用上面的CImage,不就成了吗?

http://www.lryc.cn/news/2414716.html

相关文章:

  • Root你的设备
  • BBS论坛系统的设计与实现
  • linux的 lseek 函数
  • 【JAVA语言-第1话】初识java、环境搭建、入门程序
  • 作家生涯人物访谈报告知乎_即使您不认为自己是作家,写作也会如何改善您的职业生涯
  • 发现一款 xcel 数据筛选工具,开源项目,可以继续自己发挥
  • matlab 自定义函数及调用
  • error LNK2001: unresolved external symbol memset
  • 国产人工智能语言大模型相关网站
  • aspack的简单脱壳,望大牛勿喷。
  • 窗口的创建CreateWindow/CreateWindowEx函数使用说明
  • 爱数之文件备份与恢复
  • IIS服务器的配置与管理
  • 关于nextInt()、next()和nextLine()的用法
  • 目前看到最牛的了,可以和[DOS下面看电影]媲美 http://www.cnblogs.com/sparon/articles/469603.html
  • 详细介绍 Unicode 字符集 (使用 UTF-8 或 UTF-16 编码) 和多字节字符集
  • Windows 10系统部分桌面图标上有对号如何解决?
  • 软件架构设计
  • 2024年每个网站都需要的30个最佳免费WordPress插件
  • 内插散点数据
  • 安卓系统APP开发简介
  • CodeSmith快速向导
  • window.history对象
  • 【vue】vue2与vue3实现图片懒加载
  • STM32基于TFTP固件升级经验分享
  • WPF布局控件之StackPanel
  • 宽带网速计算方法
  • 视频编解码基础知识
  • 计算机网络-数据链路层-多图
  • townscaper随机生成城镇算法分析