Delphi:具有 alpha 混合功能的图像

Posted

技术标签:

【中文标题】Delphi:具有 alpha 混合功能的图像【英文标题】:Delphi: image with alpha blending capabilities 【发布时间】:2011-03-01 04:42:40 【问题描述】:

是否有一些简单的组件可以显示 PNG 32 位图像并在鼠标进入和离开时将其 alpha 混合到另一个图像?甚至只是一个可以加载 32 位 PNG 并且还具有 Alpha 参数的简单图像......

我想我可以使用一些皮肤库(alphacontrols?)或一些图形库,但是对于一些简单的纯视觉效果,这将是相当过分的,我似乎无法找到一个简单的为我和也可以在玻璃表面上工作...

【问题讨论】:

【参考方案1】:

它不完全是一个组件,但这里有一篇关于如何自己做的好文章的链接。它只是几行代码:

http://melander.dk/articles/alphasplash/

【讨论】:

【参考方案2】:

基本的 TImage 能够显示 PNG 图像并 alpha-blend-it 到它背后的任何东西。您只需将“pngimage”单元添加到表单的使用子句中。你没有提到你正在使用的 Delphi 版本:Delphi 2010 有这个单元,但我不知道他们开始发布的是什么版本的 Delphi。对于 Delphi 7,我确定您需要找到开源“pngimage”。

如果您需要在用户进出您的控制时执行此操作,请考虑在位图中缓存状态图像:运行时会更快,您可以使用单个 TImage 来显示当前图像,但您不需要不需要两个重叠的 TIMage 控件。

【讨论】:

它能够对预混合的 .png 图稿进行 alpha 混合。但它不允许您在运行时动态混合您选择的可变 Alpha 值。至少不是不写一堆代码。

以上是关于Delphi:具有 alpha 混合功能的图像的主要内容,如果未能解决你的问题,请参考以下文章

在 Alpha 混合图像上设置背景颜色

混合颜色替换

Direct3D 使用“乘法”混合模式和 Alpha 渲染 2D 图像

UIImage 混合模式问题

Alpha 混合和 UIView 背景颜色

如何在手动“叠加”混合操作中处理 alpha?