尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
GdipCreateBitmapFromFile使用详解及易语言示例
GdipCreateBitmapFromFile是 GDI 库中的一个核心函数用于从磁盘文件创建一个Gdiplus::Bitmap对象。其返回值是一个GpStatus枚举值用于指示函数执行的成功或失败状态。一、函数返回值详解返回值 (GpStatus)数值含义Ok0函数执行成功已成功从文件创建位图对象。InvalidParameter1传入的参数无效例如bitmap指针为 NULL 或filename为 NULL。OutOfMemory3内存不足无法完成操作。FileNotFound11指定的图像文件未找到。UnknownImageFormat14文件格式不被识别或不受支持。Win32Error23发生了一个 Win32 API 错误。NotImplemented120对于该图像格式GDI 未实现解码器。核心要点调用此函数后必须检查返回值。只有当返回值为Ok(0) 时才表示位图对象创建成功后续才能安全使用。否则表示加载失败传入的bitmap指针不会被赋值。二、具体应用场景此函数是 GDI 加载图像的基础主要应用于加载非标准位图格式传统的 Windows GDI 主要支持 BMP 格式。GDI 通过此函数可以加载 JPEG、PNG、GIF、TIFF 等多种格式的图像文件。保留图像高级特性对于 PNG 等格式可以保留 Alpha 通道信息用于实现半透明、透明混合等高级渲染效果。图像处理与显示将加载的Bitmap对象传递给Graphics对象的绘制函数如GdipDrawImageRectI即可在窗口、控件或内存位图上进行显示、缩放、旋转等操作。三、易语言调用示例以下是一个完整的易语言示例演示如何初始化 GDI使用GdipCreateBitmapFromFile加载一张图片并在窗口上绘制出来。.版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .程序集变量 g_Token, 整数型, , , GDI令牌 .程序集变量 g_pBitmap, 整数型, , , GDI位图对象指针 .子程序 __启动窗口_创建完毕 .子程序 _按钮_加载图片_被单击 .局部变量 stGdiplusStartupInput, GdiplusStartupInput .局部变量 status, 整数型 .局部变量 hGraphics, 整数型 .局部变量 文件路径, 文本型 1. 初始化 GDI stGdiplusStartupInput.GdiplusVersion 1 status GdiplusStartup (g_Token, stGdiplusStartupInput, 0) .如果真 (status ≠ 0) 调试输出 (“GDI 初始化失败错误码”, status) 返回 () .如果真结束 2. 选择图片文件 通用对话框1.类型 0 通用对话框1.过滤器 “图片文件|*.jpg;*.png;*.bmp;*.gif” .如果真 (通用对话框1.打开 () 假) GdiplusShutdown (g_Token) 返回 () .如果真结束 文件路径 通用对话框1.文件名 3. 使用 GdipCreateBitmapFromFile 加载图片 注意GDI 函数使用 Unicode 字符串此处易语言文本为 ANSI需转换。 为简化示例假设文件路径不含中文。实际应用中应进行转换。 status GdipCreateBitmapFromFile (文件路径, g_pBitmap) .如果真 (status ≠ 0) 调试输出 (“加载图片失败错误码”, status) GdiplusShutdown (g_Token) 返回 () .如果真结束 调试输出 (“图片加载成功位图指针”, g_pBitmap) 4. 在窗口上绘制图片 hGraphics GetDC (取窗口句柄 ()) .如果真 (hGraphics ≠ 0) GdipDrawImageRectI (hGraphics, g_pBitmap, 10, 50, 300, 200) 在坐标(10,50)处绘制宽300高200 ReleaseDC (取窗口句柄 (), hGraphics) .如果真结束 .子程序 __启动窗口_将被销毁 5. 清理资源 .如果真 (g_pBitmap ≠ 0) GdipDisposeImage (g_pBitmap) g_pBitmap 0.如果真结束 .如果真 (g_Token ≠ 0) GdiplusShutdown (g_Token) g_Token 0 .如果真结束 以下是所需的 API 声明 .DLL命令 GdiplusStartup, 整数型, gdiplus.dll, GdiplusStartup .参数 token, 整数型, 传址 .参数 input, GdiplusStartupInput .参数 output, 整数型.DLL命令 GdiplusShutdown, 整数型, gdiplus.dll, GdiplusShutdown .参数 token, 整数型 .DLL命令 GdipCreateBitmapFromFile, 整数型, gdiplus.dll, GdipCreateBitmapFromFile .参数 filename, 文本型 .参数 bitmap, 整数型, 传址 .DLL命令 GdipDrawImageRectI, 整数型, gdiplus.dll, GdipDrawImageRectI .参数 graphics, 整数型 .参数 image, 整数型 .参数 x, 整数型 .参数 y, 整数型 .参数 width, 整数型 .参数 height, 整数型 .DLL命令 GdipDisposeImage, 整数型, gdiplus.dll, GdipDisposeImage .参数 image, 整数型 .DLL命令 GetDC, 整数型, user32.dll, GetDC .参数 hwnd, 整数型 .DLL命令 ReleaseDC, 整数型, user32.dll, ReleaseDC .参数 hwnd, 整数型 .参数 hdc, 整数型 GDI 初始化结构体 .数据类型 GdiplusStartupInput .成员 GdiplusVersion, 整数型 .成员 DebugEventCallback, 整数型 .成员 SuppressBackgroundThread, 整数型 .成员 SuppressExternalCodecs, 整数型关键步骤说明初始化与清理使用GdiplusStartup和GdiplusShutdown管理 GDI 生命周期。加载图片核心调用GdipCreateBitmapFromFile并检查其返回值是否为Ok(0)。路径问题GDI 函数需要 Unicode 字符串。此简化示例未做转换若路径包含中文可能导致失败。生产代码应将 ANSI 路径转换为 Unicode。资源释放使用GdipDisposeImage释放Bitmap对象防止内存泄漏。参考来源win32汇编环境窗口程序中使用GDI显示jpg图片在win32汇编环境中使用GDI显示png、jpg等图片C加载PNG图片使用PNG实现半透明的窗体使用GDI进行图片处理时要注意的问题
RELATED

相关推荐

模型分享还在发源文件?一个链接解决安全与便捷的两难

模型分享还在发源文件?一个链接解决安全与便捷的两难

外协加工中,传递三维模型进行尺寸确认或结构评审,是制造企业常见的协作场景。一个几百MB的STEP文件,通过邮箱发送往往因附件过大被退回。改用网盘传输,上传下载耗时较长,且发送方对源文件发出后的流转路径逐渐失去控制…

📅 2026/9/14 17:36:18
一个职业教育观察者的手记:我在信工的无人机产教融合基地,看到了什么

一个职业教育观察者的手记:我在信工的无人机产教融合基地,看到了什么

产教深度融合 共建工业级特色专业(客户供稿) 文 | 职业教育行业观察员 林远 前不久去河北出差,顺便走访了一所职业院校。 说实话,这两年看过的校企合作项目不少。企业挂牌、设备捐赠、专家讲座——流程大抵相同,成果也…

📅 2026/9/5 22:56:23
Unity开发C盘空间告急?彻底迁移缓存与优化实战指南

Unity开发C盘空间告急?彻底迁移缓存与优化实战指南

1. 项目概述:Unity开发者的C盘“救火”行动 如果你是一名Unity开发者,或者你的团队里有Unity开发者,那么“C盘红了”这个场景大概率不会陌生。这几乎是每个Unity项目进行到中后期,特别是涉及大量资源导入、频繁测试构建时&#xf…

📅 2026/10/6 14:20:48
MORE NEWS

更多资讯

📰

MySQL日期与时间戳转换全攻略:从类型原理到踩坑排查

接手过统计后台的都知道,最怕的不是SQL写不出来,而是表里的时间字段类型五花八门。前阵子我就遇到一张日志表,建表时图省事把create_time定义成varchar,结果按月统计要靠字符串截取函数拼接,从源库导过来的数据有的带毫…

📰

MySQL日期时间转换全攻略:DATE与TIMESTAMP互转及避坑指南

1. 前缀:为什么大家都在折腾日期转换 先问你一个问题:如果把数据库里的 20240806 这个字符串,和 2024-08-06 17:30:00 这个标准日期,直接用 > 比较大小,结果会是什么? 很多人第一反应是“能比较”…

📰

从影刀RPA到MySQL:内置包、Xpath与数据入库实战解析

我是那种拿到影刀RPA高级操作题会先焦虑半天的选手,尤其看到题目里同时出现“内置包”“Xpath”“MySQL”这三个词。因为单独考任何一个,都能靠背指令糊弄过去,放在一起就成了连环坑。这道题的网络题目描述很简单:使用影刀RPA内置…

📰

Superpowers:基于Web的多人协作游戏开发平台实战解析

如果你是个没事就爱翻翻开源社区的人,大概率见过这个名字:Superpowers。它在某些榜单上被归为"游戏开发工具",但又和Unity、Godot这些传统IDE画风明显不一样——因为这玩意儿连窗口程序都不是,它跑在浏览器里&#xff0…

📰

Agent-Reach 实战:CLI AI Agent 从环境搭建到并发部署

1. 从零认识 Agent-Reach:一个把 AI Agent 拉进终端的 CLI 工具第一次看到 Agent-Reach 这个名字,我下意识把它和市面上那些"套壳聊天框"归到了一类。直到我把它的定位、关键词和一堆相关热词摆在一起看——CLI、AI Agent、Python、并发、部署…

📰

OpenShell深度体验:跨平台终端统一与插件开发实战

说实话,一开始我对“OpenShell”这种名字是带着一点警惕的。毕竟终端圈子里的工具多如牛毛,光是把PowerShell、Zsh、Fish、Nushell这些老面孔折腾明白就够喝一壶了,再来一个新东西,第一反应往往是“又一个大而全的轮子”。但真正上…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬