按钮控件和 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 透明度 的相关文章

  • XE2 中的 COM 是否损坏?我该如何解决它?

    Update XE2 Update 2 修复了下述错误 下面的程序是从实际程序中截取的 在 XE2 中失败并出现异常 这是 2010 年的回归 我没有 XE 来测试 但我希望该程序在 XE 上运行良好 感谢 Primo 确认代码在 XE 上
  • MFC CImage alpha 混合出错

    我必须在图片控件上呈现由两个 PNG 文件组成的图像 其中顶部图像在某些位置具有透明像素 结果应该是plotter png 与 bar png 顶部重叠显示为 注意条上奇怪的白色轮廓 但应该是 我为它编写的代码很简单 CImage imag
  • 在 Inno Setup 中使用 StringToColor

    我想为表单上的标签 TNewStaticText 属性颜色 TColor 读写 分配一些颜色 我将颜色存储为 RRGGBB 字符串 我想使用 Delphi 函数 StringToColor 将其转换为 TColor 但如果我在脚本中使用此函
  • Python 3.x 中的 PIL ImageTk 等效项

    我正在使用 Tkinter 开发一个应用程序 它使用以下数据库png图标的图像文件 为了在应用程序中使用所述图像 我使用 PIL 打开它们Image open 运行它通过ImageTk PhotoImage函数 然后将其传递给小部件构造函数
  • Three.js、自定义着色器和具有透明度的 png 纹理

    我有一个非常简单的 PNG 纹理 一个带有透明背景的灰色圆圈 我用它作为制服map for a THREE ShaderMaterial var uniforms THREE UniformsUtils merge basicShader
  • 一种用javascript创建随机噪声背景图像(png)的方法?

    YouTube的新布局添加了我非常喜欢的背景随机噪声 在其他网站上看到了几乎完全相同的效果 所以我计划在我的网页原型中使用相同的技术 或者至少在其中使用这个 技巧 我的工具箱以供将来使用 图片是这样的 取自http g raphaeljs
  • 错误:使用 Microsoft WebService.dll 通过 Delphi7 规范化 XML

    我正在使用 Delphi7 修改旧项目以添加使用证书和签名 经过一番搜索后我发现XML 规范化函数 https learn microsoft com en us previous versions dd815358 v vs 85 但我无
  • 我可以在“Delphi 2007 for Win32”中使用.NET DLL吗?

    是否可以在 Delphi 2007 for Win32 中使用 NET DLL 我尝试以与 ActiveX 组件相同的方式导入 DLL 但它似乎不起作用 组件菜单 gt 导入组件 gt 导入 NET 程序集 是否可能 如果可以 步骤是什么
  • Delphi TImageList 位图更改

    我正在使用 Delphi XE2 Update 3 Update 4 与我们的一些第 3 方组件不兼容 因此我们尚未更新 我在我的应用程序中使用 TImageList 我注意到很多时候当它从源视图切换到表单视图 F12 时 突然之前未修改的
  • 如何在滚动框上创建缓慢的滚动效果?

    我喜欢在滚动框中平移图像后创建平滑的减慢滚动效果 就像平移地图一样谷歌地图 http maps google com 我不确定它是什么类型 但行为完全相同 当快速移动地图时 当您释放鼠标时它不会立即停止 而是开始减慢速度 有什么想法 组件
  • Android 上透明 png 渲染阴影的质量

    当使用具有精细褪色阴影的透明 PNG 图像时 Android 屏幕上的阴影周围总会有一条边缘线 它不会在模拟器或 Exclipse 中显示这一点 看照片 我想知道是否有办法改进这一点 这是否与 Android 屏幕无法显示所有 24 位颜色
  • 如何根据输入的内容过滤组合框的内容?

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

    经过一些实验 我最终得到了以下代码来在 MSWord 中执行搜索和替换 此代码在页眉和页脚中也能完美运行 包括首页或奇数 偶数页的页眉和 或页脚不同的情况 问题是我需要打电话MSWordSearchAndReplaceInAllDocume
  • 如何在Android中将位图转换为PNG,然后转换为base64?

    正如标题所暗示的 我试图让我的 Android 应用程序的用户从他的设备中选择一个图像 完成 然后我想缩小图像 完成 将图像压缩 转换为 png 并发送它作为 Base64 字符串发送给 API 所以我目前调整图像大小 如下所示 optio
  • 我如何在Delphi中处理事件?

    例如 我有一个程序 在单击 Button1 后执行某些操作 如果没有 Button1Click 中的代码 如何处理按钮的 onclick 事件 我需要为 Button1 动态添加事件 unit Unit1 interface uses Wi
  • 如何在调试器中显示 TStringList 的内容?

    我想在调试应用程序时显示 TStringList 的全部内容 相反 我只是得到指示 Flist 仅显示地址 如果您使用的是 Delphi 2010 或更高版本 调试器允许使用调试可视化工具 http docwiki embarcadero
  • 如何在 Delphi DBLookupComboBox 中选择正确的项目

    我有一个数据库查找组合框连接到数据库查询 那部分工作正常 当我运行程序时数据库查找组合框填充有查询的结果 我想看看数据库查找组合框填充第一项 请选择 当 的时候程序第一次运行或者当一个新项目行动已启动 见下图 另外 如果我正在加载以前保存的
  • TOpenDialog/NSOpenPanel 无法在沙盒 Delphi 应用程序中工作

    Firemonkey 应用程序中的 TOpenDialog 似乎存在问题 该应用程序已针对 Mac Appstore 进行沙箱处理 我使用XE3 但它也存在于XE2中 我其实在这里找到了一份QC报告 但仍然没有解决 http qc emba
  • 具有 csOwnerDrawFixed 样式的组合框如何表现得像 csDropDown 样式?

    我正在使用一个组合框 http docwiki embarcadero com Libraries en Vcl StdCtrls TComboBoxstyle 属性设置为的组件csOwnerDrawFixed 我实现了绘图项一切工作正常
  • 石和磅的格式正确吗?

    我有一个图表 用于显示重量 以英石和磅 lbs 为单位 该图表由记录中的数据填充 对于权重 数据类型为 Double 记录数据是在运行时编辑的 我需要知道一种正确格式化输入数据的方法 为了更好地理解 首先看一下这些示例值 它们表示为石和磅

随机推荐

  • 在 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就无法支持透明度