Delphi - 从 TImageList 获取位图 [关闭]

2023-12-23

我将图像添加到图像列表中,如下所示 -使用 Delphi XE 在运行时将 png 图像添加到图像列表 https://stackoverflow.com/questions/4221597/add-a-png-image-to-a-imagelist-in-runtime-using-delphi-xe/4618630#4618630。从该列表获取位图并将其保存到硬盘驱动器时会出现问题。

bmp:=tbitmap.create;
imagelist.getbitmap(0,bmp);
bmp.savetofile()

这种情况发生在很多白色 bmp 文件和一些带有“图像”的文件中。它应该非常容易,但我不明白出了什么问题。

LE:这个例子更像是伪代码。代码如下:

填写清单

   FImageList := TImageList.Create(nil);
   FImageList.Masked:=false;
   FImageList.ColorDepth:=cd32bit;
   FImageList.SetSize(32,32);//I am sure that all images are 32x32
   while not dsTemp.eof do//dstemp is a Tdatasetdescendant
    begin
     ststream := dsTemp.CreateBlobStream(dsTemp.FieldByName('FLAG'), bmRead);

     pngImage := TPngImage.Create;
     pngImage.LoadFromStream(ststream);

     btBitmap := TBitmap.Create;
     btBitmap.PixelFormat := pf32bit;
     btBitmap.Width := pngImage.Width ;
     btBitmap.Height := pngImage.Height ;
     pngImage.AssignTo(btBitmap);
     btBitmap.AlphaFormat:=afIgnored;

     res := FImageList.Add(btBitmap,nil);
//     pngImage.savetofile('C:\a\'+inttostr(res)+'.png');-works. image is ok
//     btBitmap.savetofile('C:\a\'+inttostr(res)+'.bmp');-works. image is ok
     dsTemp.Next;
     freeandnil(btBitmap);
     freeandnil(pngImage);
    end;

加载位图的问题

 for iPos := 0 to FImageList.Count-1 do
  begin
     btBitmap := tbitmap.create;
     FImageList.GetBitmap(iPos,btBitmap);
     btBitmap.savetofile('C:\a\'+inttostr(iPos)+'thr.bmp');//creates the bitmap, but it is white
  end;

问题结束后编辑:请多投反对票!谢谢


基于乌韦·拉贝的 https://stackoverflow.com/users/26833/uwe-raabe回答我让它工作。解决方案:

 for iPos := 0 to FImageList.Count-1 do
  begin
     btBitmap := tbitmap.create;
     btBitmap.PixelFormat := pf32bit;
     btBitmap.AlphaFormat := afIgnored;
     FImageList.GetBitmap(iPos,btBitmap);
     btBitmap.savetofile('C:\a\'+inttostr(iPos)+'thr.bmp');
  end;

现在位图已正确保存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi - 从 TImageList 获取位图 [关闭] 的相关文章

  • 有什么办法可以将2个数组添加到一个数组中吗?

    有没有一种简单通用的方法可以将两个数组添加到一个数组中 在下面的情况下 不可能简单地使用C A B陈述 我想避免每次都为它制定算法 TPerson record Birthday Tdate Name Surname string end
  • 在 Inno Setup 中使用 StringToColor

    我想为表单上的标签 TNewStaticText 属性颜色 TColor 读写 分配一些颜色 我将颜色存储为 RRGGBB 字符串 我想使用 Delphi 函数 StringToColor 将其转换为 TColor 但如果我在脚本中使用此函
  • Delphi - 通过 ADO 查询获取 Excel 行

    我有以下 Excel 文件 我将 AdoConnection ConnectionString 设置为 AdoConnection ConnectionString Provider Microsoft Jet OLEDB 4 0 Data
  • 如何更改 Chromium 组件的默认背景颜色?

    I use TChromium http code google com p delphichromiumembedded 我分配AWebPageAsString这是一个带有灰色背景颜色的静态 HTML 页面 FBrowser TChrom
  • Delphi (Indy) TIdTCPClient 在线程中

    在互联网上 我看到通常将 TIdTCPClient 放置在自定义 TThread 后代中 为什么要这样做 有时我也在这样的线程中看到服务器 为什么 干杯 阿德里安 Indy 使用阻塞 I O 最好在线程中处理 这是 Indy 整体设计的核心
  • 如何在 Vista 上安装 Delphi 7

    我多次尝试在 Vista 上安装 Delphi 7 但 Vista 告诉我此应用程序 Delphi 7 存在已知问题 从而阻止了我这样做 我公司的其他几个人在 Vista 上安装 D7 时遇到了问题 由此得出的结论是 我们的 D7 应用程序
  • 如何在Delphi XE中通过名称获取类类型引用?

    我实际上正在尝试使用 Rtti 来实现通用方法调用程序 它应该像这样工作 我将提供类名 方法名和参数 调用者将通过调用此类的指定方法来完成其工作 因此 我需要类引用才能获取其 Rtti 信息并寻找我想要调用的方法 有没有办法在不实现我想要使
  • 加载 Jpg/Gif/Bitmap 并转换为 Bitmap

    我必须从 XML 文件加载图像 XML 文件中没有关于图像是否为 JPG GIF BMP 的信息 加载图像后 我需要将其转换为位图 有谁知道如何在不知道实际文件格式的情况下将图像转换为位图 我正在使用 Delphi 2007 2009 谢谢
  • Delphi线程死锁

    我有时会在销毁某些线程时遇到死锁问题 我尝试过调试该问题 但在 IDE 中调试时似乎从未存在死锁 可能是因为 IDE 中的事件速度较低 问题 当应用程序启动时 主线程会创建多个线程 线程始终处于活动状态并与主线程同步 完全没有问题 当应用程
  • delphi 变量值在循环中的线程中发生变化

    我的代码正在运行一个 for 循环来处理一些数据 如下所示 procedure printValue Value Integer begin TThread Synchronize TThread Current procedure beg
  • 如何在滚动框上创建缓慢的滚动效果?

    我喜欢在滚动框中平移图像后创建平滑的减慢滚动效果 就像平移地图一样谷歌地图 http maps google com 我不确定它是什么类型 但行为完全相同 当快速移动地图时 当您释放鼠标时它不会立即停止 而是开始减慢速度 有什么想法 组件
  • 如何在 Delphi REST 中发布内容类型为“multipart/form-data”的数据?

    我正在尝试使用 REST API 发送请求multipart form data作为内容类型 我总是收到 HTTP 1 1 500 Internal Error 作为响应 我尝试向需要的方法发送请求application x www for
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • 带位图的简单组合框

    如何将位图放入组合框中并将样式设置为简单 例如 Google Chrome 的右侧有星号 Firefox 的右侧有箭头 我尝试了这段代码 procedure TForm2 ComboBox1DrawItem Control TWinCont
  • 如何在Delphi中下载一个非常简单的HTTPS页面?

    我尝试了在这里看到的代码 但它不适用于 HTTPS 我需要将此页面作为字符串下载 并在其上添加一些换行符 以便将信息按顺序放入 TMemo 中 怎么做 我尝试使用 Indy 但由于 SSL 问题而失败 我尝试了此页面的解决方案 如何将网页下
  • TDictionary 上的 GetItem 由链接器消除

    我正在使用一个TDictionary of
  • 以编程方式重新启动 Delphi 应用程序

    应该不可能运行我的应用程序的多个实例 因此项目源码包含 CreateMutex nil False PChar ID if GetLastError ERROR ALREADY EXISTS then Halt 现在我想以编程方式重新启动我
  • Word 2010 自动化:“转到书签”

    我有一个用 Delphi 7 编写的程序 它打开一个基于模板的新 Word 文档 文档打开后 系统会自动跳转到书签 在模板中预定义 并在其中添加一些文本 以下代码在 Word 2003 中工作正常 但会导致invalid variant o
  • Delphi AES 库 (Rijndael) 使用 KAT Vectors 进行测试

    对于这两个库 Delphi 加密概要 v 5 2 http code google com p delphidec TurboPower 密码箱 v 2 07 http lockbox seanbdurkin id au tiki list
  • 如何从 VCL.Graphics 获取所有已注册的文件格式...但 64 位

    在我的 32 位应用程序中 我使用FindRegisteredPictureFileFormats 单元由 Cosmin Prund 提供 https stackoverflow com a 14677532 505088 gt 如何从图形

随机推荐

  • IE 11 和 IE Edge 获取 file.type 失败

    change btn file file getfileinfo getfileinfo function e var fileInput document getElementById fileupload var file fileIn
  • 机器人不接收消息

    我试图让我的机器人回复消息 但它不起作用 有人知道如何解决这个问题吗 Code const Discord require discord js const client new Discord Client intents GuildMe
  • 在 Visual Studio 2010 中调整大小时出现不需要的窗口

    我一直在 Visual Studio 2010 中从事一个使用 C 创建大型 Windows 窗体的项目 令我困扰的是 每当我觉得需要更改表单的布局并在设计器视图中打开它时 它都会调整为稍小的尺寸集 每次这样做时 我都必须恢复尺寸并在某些面
  • 生成字符串的所有可能的连续单词组合

    我想生成特定字符串的所有可能的连续单词组合 给定最小长度作为参数 假设我有 hello 结果将是 最小长度为 3 hel ello ello hell ello hello 我实现这一目标的一种方法是通过 def get all word
  • 使用 cURL 请求 instagram api 访问令牌

    我正在尝试从 instagram api 获取访问令牌 这是文档的示例请求 curl F client id CLIENT ID F client secret CLIENT SECRET F grant type authorizatio
  • 在 C# 中获取指向 KeyValuePair 数组的不安全指针

    我有很多KeyValuePair
  • 如何配置“全有或全无”的 Ansible 剧本?

    我有很多服务器需要经常修补 我计划使用 Ansible 来协调修补过程 这里要注意的是 它必须是 全有或全无 的修补程序 要么所有服务器都打补丁 要么没有 我正在考虑的剧本任务如下 1 转到所有服务器并拍摄 lvm 快照 2 IIF 任务
  • 如何在勾选或取消勾选部分项目时勾选和取消勾选所有项目

    JavaFX 检查组合框 如何在选中或取消选中某些项目时选中和取消选中所有项目 点击项目全部时勾选全部 https i stack imgur com Yk0D1 png 取消选中项目 All 时取消选中全部 https i stack i
  • Xamarin.ios 构建因 HEALTHKIT 参考而被拒绝

    由于引用 HEALTHKIT 框架 我的 xamarin ios 版本已被应用程序中心拒绝 仅因为某些第三方库 我无法将链接器设置为 SDK 框架 另外 我已经上传了一个带有 mtouch 参数 linkskip HealthKit 的ne
  • 一个appdomain可以限制在一个目录吗?

    我正在开发一个插件主机 插件应该具有尽可能少的信任 但是我希望插件能够读取和写入文件 是否可以将加载程序集的 AppDomain 限制为只能访问一个目录进行读写 其他选项和方法也值得赞赏 例如将文件数据从主机流式传输到插件 读取 以及从插件
  • 如何在Tomcat中部署AAR

    我有使用 Ant 生成的 AAR 格式的文件 但我想将其部署在 Tomcat 服务器中 Tomcat 仅支持 WAR 文件 我尝试使用命令生成war文件jar cvf smth war但如果没有清单 它就不起作用 有人知道如何将 AAR 转
  • 使用 Devops CI/CD 将 Django Web App 部署到 Azure 应用服务

    我正在尝试使用 CI CD 管道 Microsoft 为应用程序部署提供的最基本的管道 我没有进行任何更改 将简单的 django web ap 部署到 Azure 应用程序服务 但是我收到以下错误 2021 03 08T16 55 51
  • 仅当该值存在时,才通过 vlookup 另一个数据帧替换列中的值

    我想覆盖我的df1 Name基于映射表的值 df2 Name1 df2 Name2 然而 并非所有值df1 Name存在于df2 Name1 df1 Name Alex Maria Marias Pandas Coala df2 Name1
  • 如何使用 PWA 离线播放视频内容?

    我对 PWA 离线视频有几个问题 如何使用渐进式网络应用程序离线观看视频 客户端应该使用哪种存储机制来存储视频数据 浏览器方面是否有存储限制 我使用 Service Worker 使用 PWA 来处理文本数据的离线功能 但陷入了如何对视频做
  • sqlalchemy:无法确定父/子表之间的连接条件

    我对 SQLAlchemy 非常陌生 我在应用程序中的两个模型之间建立一对多关系时遇到一些困难 我有两个模型用户 照片 一个用户只有一个与其关联的角色 而一个角色可以有多个与其关联的用户 这是我的 data generator py 文件中
  • AdMob“空间不足,无法展示广告”错误

    我是安卓新手 我通过在 main xml 中进行以下更改 在我的 Android 应用程序中添加了 AdMob
  • Android Studio appengine 端点不包括构建器

    在我的 AndroidStudio 项目中 我有两个模块 app 即 android 模块 和 api 即应用程序引擎模块 App Engine 模块 api 是通过在 AndroidStudio 中创建 Endpoints App Eng
  • 验证 redux 形式的确认密码

    如何以反应形式验证密码确认 const validate values gt const errors if values username errors username Required if values password error
  • 如何打印 hashmap 中的所有键? [复制]

    这个问题在这里已经有答案了 我正在尝试了解哈希图的工作原理 并且一直在摆弄一个小型电话簿程序 但当我想打印出所有钥匙时 我不知道该怎么办 这是我的代码 import java util HashMap import java util pu
  • Delphi - 从 TImageList 获取位图 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我将图像添加到图像列表中 如下所示