按钮控件和 TBitmap 的底层替代品,无需编写预混合代码即可正确处理 PNG 透明度

2024-02-26

Delphi 2010的TSpeedButtons似乎并没有真正正确支持PNG透明度,因为Glyph属性内部使用TBitmap,而TBitmap用于位图,并且不能正确支持PNG透明度,那么TSpeedButton.Glyph就无法支持透明度。更新:但实际的问题是我有一些外部东西(Developer Express组件)使delphi的PNG支持不起作用,另一方面,TImage虽然仍然是TPicture,并且可以支持PNG,但也受到了这个Developer的影响表达错误。

已经有人问过一个问题here https://stackoverflow.com/questions/5305519/is-it-possible-to-remove-hideous-outline-around-a-tspeedbutton-glyph,答案展示了如何使用预混合以使透明度不会变成黑色像素。我想知道是否有另一个按钮控件将使用在设计时加载的 alpha 混合 PNG,并且不会将 PNG 资源转换为 BMP 格式,从而丢弃 alpha 通道,并导致此处显示黑色边框。

简而言之,该控件不会使用 TBitmap,也不会使用 TBitmap 所具有的所有颜色键透明度功能。

再说一遍,我不是问如何解决外部黑色问题,同时仍然使用过时的基于 TBitmap/TSpeedButton 的 VCL 功能,因为它缺乏现代 PNG 透明度功能,我问的是如何将其替换为其他“有效”的东西。

第二个缺点是,将小 .png 文件转换为 .DFM 位图资源本质上是浪费空间,并使我的表单 .DFM 内容太大。 .dfm 中的本机 .png 文件格式存储应使生成的表单更小。

Update:PngComponents 看起来应该可以工作,但我得到了一个Invalid Graphic format当我尝试将 png 加载到 Png 速度按钮时出错。请注意,Png 图像列表组件不存在此类问题。看来 cxLibrary(开发者快递包)正在破坏一些事情。一旦我删除了所有开发者快递的东西,这个问题就消失了。因此,尽管我选择了 Pngcomponents 作为答案,但如果您安装了 devex 的东西,请使用它们的按钮,而不是 pngcomponents。


你可以看看PNG组件 http://cc.embarcadero.com/Item/26127。它有一个 TPngSpeed 按钮和一些其他直接与 Png 图像一起工作的控件。

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

按钮控件和 TBitmap 的底层替代品,无需编写预混合代码即可正确处理 PNG 透明度 的相关文章

  • EIdOSSLUnderlyingCryptoError 和“使用 SSL 连接时出错。错误:14094410...”

    我在 OS X 上的 Delphi 10 1 Berlin 中遇到 Indy 组件问题 我正在使用TIdHTTP使用 HTTPS 连接到 Web 服务 问题是从 OS X 客户端连接到服务器 在 OS X 上运行时 我总是遇到同样的错误 P
  • Delphi - 相当于C#的三元运算符? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi 中是否存在或者将来是否存在条件运算符 https stackoverflow com questions 2108609 is there or is there ever going
  • 使用 .NET 将两个 PNG 图像合并为一张图像

    我有两个 其实很多 PNG http en wikipedia org wiki Portable Network Graphics png 我的应用程序中的图像 两者都有透明区域 我想在我的应用程序中拍摄两个图像 将它们组合起来 并将结果
  • 图像/png 响应的原始响应

    我收到一个带有原始响应的响应主体 它应该代表一个 png 图像 我的问题是如何解码它并使其可渲染 PS 当我使用邮递员来测试这个时 我意识到邮递员可以渲染这个原始字符串 我想知道它是如何做到的 PNG IHDR X PPHYs o d ID
  • 以 png 格式剪辑幻灯片 (Delphi 2010)

    I have a filmstrip of images in png format like this 我想知道如何剪辑每个图像并将这些图像放入 TImageList 控件中 并始终保留透明度 EDIT 是的 在设计时 RRUZ 提到的技
  • 我需要避免尝试更新连接到 TSQLQuery 的 Delphi TClientDataset 中的非物理字段

    概要 我的代码正在尝试更新 Delphi XE 中的非物理字段TClientDataset 连接到TSQLQuery以其SQL属性集 作为运行时的结果创建Open命令 我有一个TClientDataset连接到一个TDatasetProvi
  • Delphi中的抽象类

    我正在使用一个具有许多抽象类的组件套件 现在我想应用多态性 但在创建对象时收到错误抽象类 即使我不需要 我是否应该重写所有虚拟方法 有什么解决方法或解决方案吗 为了创建类的实例 您需要重写所有声明为虚拟抽象的方法 即使您不使用它们 如果您确
  • DELPHI 和 WANT 或 NANT

    We use 巡航控制 net http confluence public thoughtworks org display CCNET Welcome to CruiseControl NET在 Delphi 2006 应用程序中进行持
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • TColorProperty德尔福柏林10.1.2?

    我正在尝试将组件从 Delphi 7 转换为 Delphi Berlin 平面组件 https sourceforge net projects flatstyle https sourceforge net projects flatst
  • Delphi 2010 - 从 XML 文档解码 Base64 编码图像

    我正在尝试从应用程序中的 XML 文档解码 base64 编码的 EMF 图像并将其呈现在屏幕上 但是 它似乎从未出现 如果我将 XML 文档中的数据复制 粘贴到 Notepad 中并使用Base64 Decode选项并将文件另存为 emf
  • 对象的引用计数

    在我的代码中 我使用一个小的数据存储类 它是在不同的地方创建的 为了避免内存泄漏并简化事情 我想使用引用计数 所以我这样做了 type TFileInfo class TInterfacedObject IInterface 并删除了我对
  • 如何用不同的颜色绘制选定的列表框项目?

    是否可以更改 TListBox 中的项目选择焦点颜色和文本颜色 当项目中未启用主题或列表框样式设置为所有者绘制时 项目周围的选择将被涂成蓝色 我相信这是由系统的外观设置全局定义的 我想将所选项目的颜色更改为自定义颜色 举个例子 结果会是这样
  • 防止多个实例 - 但还要处理命令行参数?

    我正在从我的应用程序处理与 Windows 相关的扩展文件 因此 当您在 Windows 中双击文件时 它将执行我的程序 然后我从那里处理该文件 如下所示 procedure TMainForm FormCreate Sender TObj
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty
  • logback的“谨慎模式”是如何实现的?

    The 审慎模式 http logback qos ch manual appenders html prudentlogback 中的序列化所有 JVM 之间的 IO 操作 写入同一文件 可能运行在不同的主机上 在其他日志记录框架中 如果
  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • Delphi - 如果没有创建类,为什么这个函数可以工作?

    考虑这个类 unit Unit2 interface type TTeste class private texto string public function soma a b integer string end implementa
  • 阻止 IDE 自动添加使用单位

    我正在将 Lazarus 项目转移到德尔福西雅图 Lazarus 项目依赖于 40 多个单元 包括控件 并具有多种应用程序 在所有项目的使用条款中 他们使用了以下内容 uses Classes SysUtils Forms Controls

随机推荐

  • 在 Lion 中获取 TFENode 的完整路径

    我正在尝试获取 OSX Lion 中 TFENode 的完整路径 但无法使用旧方法获取结果 通过转换为 FINode 并获取 fullPath 该方法 FINode nodeWithFENode myTFENode fullPath 似乎不
  • Jvm 崩溃:Java 运行时环境检测到致命错误

    我在实时服务器上发生了 Tomcat 崩溃 生成了 hs err pid 文件 其中有一个有问题的帧 gt wordcopy fwd dest aligned 0x54 我搜索了所有类似的 jvm 崩溃案例 但找不到这个有问题的框架的含义
  • 不支持的类版本错误

    当尝试从使用 Eclipse IDE 使用 jdk1 6 制作的客户端调用使用 NETbeans 使用 jdk1 7 制作的 EJB 时 我收到以下错误 Exception in thread main java lang Unsuppor
  • Oracle: ORA-01722: 无效数字

    我有一个查询 当我在 sqlplus 中运行它时效果很好 SQL gt SELECT T 0 ID AS ATTR 1 T 0 0 ID AS ATTR 2 CASE WHEN T 0 ID 1 AND T 0 0 ID 3 OR T 0
  • 从firebase客户端sdk获取user_pseudo_id?

    在 Firebase 分析中 user pseudo id自动登录bigquery 但是 我想在 firebase 客户端 sdk 例如 android ios sdk 中获取此值来指定用户 我在 firebase 的文档中找到了 但找不到
  • Paw 在外部浏览器中打开链接

    在开发端点时 我需要遵循相当复杂 繁琐的登录过程来向我们的网守进行身份验证 为此 我在 Paw 中打开开发人员登录页面 它在爪子内部打开并正确呈现内容 如果我单击按钮实际登录 则会打开外部浏览器 导致 Paw 无法跟踪正确的 cookie
  • 使用 strcmp 比较字符数组中的字符

    我已将 xml 文件读入 char 中 并尝试将该数组中的每个元素与某些字符 例如 进行比较 char 数组 test 只是一个包含一个元素的数组 包含要比较的字符 我必须这样做 否则 strcmp 方法会给我一个有关将 char 转换为
  • AzureML:“训练火柴盒推荐器”不起作用,并且没有描述错误

    我尝试使用该模块创建自己的实验 但未能成功 这是我得到的例外 错误 0018 用户 项目 评分三元组的训练数据集包含无效数据 关键 InputParameters DataTable Rows 14 Columns 3 estimatedS
  • 协议与自身的行为

    我最近在读Swift 中的协议 通用类型约束和数组 http letvargo mooo com protocols generic type constraints and arrays in swift 我的问题涉及博客中的以下两个示例
  • 线程安全,无易失性

    谁能解释为什么这个例子是线程安全的 没有易失性 http www cs umd edu pugh java memoryModel DoubleCheckedLocking html http www cs umd edu pugh jav
  • html5 相机输入可以在 Windows 10 平板电脑上使用吗?

    TL DR html5 相机输入可以在 Windows 10 平板电脑上使用吗 Details 设备 Dell Venue 8 Pro 平板电脑 操作系统 Windows 10 浏览器 Chrome Setup 使用以下 html 创建并托
  • 带参数的 before_filter

    我有一个方法可以执行以下操作 before filter authenticate rights only gt show def authenticate rights project Project find params id red
  • 如何在命令中传递对象参数?

    我使用带有参数的新命令创建了 eclipse rcp 项目的plugin xml ArrayList
  • itertools.islice 与列表切片比较

    我一直在尝试应用一种算法根据特定标准将 python 列表缩小为较小的列表 由于原始列表的体积很大 大约有 100k 个元素 我尝试使用 itertools 来避免多次内存分配 所以我想出了这个 reducedVec F if sum 1
  • 使用 Bash 发出 POST 请求

    我有 100 个 Jetpack 必须登录才能配置 我正在尝试在 bash 脚本中执行此操作 但我没有运气 我可以毫无问题地连接到 wifi 但我的 POST 请求没有实现任何目标 有什么建议吗 这是我的 github 的链接 我有在 Bu
  • 构建给定文本中最常用单词的 ASCII 图表 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 挑战
  • 每个页面上都需要InitializeCulture()吗?

    我有一个需要本地化的网络表单网站 我的意思是 它是本地化的 我只需要根据域设置正确的语言即可 就像是 protected override void InitializeCulture var i Request Url Host ToLo
  • 如何分割文件并保留每个部分的第一行?

    Given 一个大文本数据文件 例如 CSV 格式 具有 特殊 第一行 例如字段名称 Wanted coreutils 的等价物split l命令 但附加要求原始文件中的标题行出现在每个结果片段的开头 我猜是一些混合物split and h
  • 如何查找整数数组中每个元素的排名

    我想找出数组中每个元素从0开始的排名 例如 arr 2 1 3 rank will be 1 0 2 解释 rank of 2 is 1 because 2 is greater than exactly 1 element rank of
  • 按钮控件和 TBitmap 的底层替代品,无需编写预混合代码即可正确处理 PNG 透明度

    Delphi 2010的TSpeedButtons似乎并没有真正正确支持PNG透明度 因为Glyph属性内部使用TBitmap 而TBitmap用于位图 并且不能正确支持PNG透明度 那么TSpeedButton Glyph就无法支持透明度