Delphi:来自 TImageList 的 TPicture

标签 delphi bitmap image timagelist

如何从 TImageList 中获取 TPicture?

我需要做Image1.Picture:=...TPicture从图像列表中,将图像加载到 TImage 中。

图像列表存储我所有透明的 PNG 图像。

我尝试使用位图(GetBitmap),但我需要的是透明度。不幸的是,我有一个使用位图的白色背景。

谢谢!

最佳答案

常规的 TImageList 使用位图。虽然它们可以是部分透明的,但实际上只是假的。在 Delphi 中,您可以通过为它们分配单一透明颜色来将位图绘制为透明。该确切的颜色将被绘制为 100% 透明,而其他颜色则不是。通常颜色取自图像的左下角。

TPicture 本身不做任何事情。它只是 TGraphic 后代的容器。您必须找到一种可以透明的图像。

一种方便的格式是PNG。 PNG 事件支持 alpha channel ,这意味着可以为每个像素分配不同的透明度值。

幸好有 TPNGImageLists 将 TImageList 的易用性与 PNG 的强大功能相结合。您可以阅读this article .它是荷兰语的,但也许谷歌翻译可以帮助你。或者,也许您可​​以找到有关此主题的英文资源。我使用了这个图像列表,它很棒,因为您可以拥有带有 alpha channel 的实际图标,并且仍然可以将它们与常规工具栏和快速按钮一起使用。

关于Delphi:来自 TImageList 的 TPicture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7261330/

相关文章:

delphi - 崩溃后修改了Delphi 2007 IDE布局

delphi - 在 Delphi XE7 中使用 NetEncoding 对字符串进行 Base64 解码?

c# - 字节数组到位图图像

c# - 在通过网络发送之前压缩位图

css - 不正确的 CSS 按钮高度计算

python - 如何找到用 matplotlib 绘制的图传递的像素

delphi - 可以将数组存储在 TQueue 中吗?

java - Android 中 Bitmap 的 getPixels 方法说明

c++ - 使用 OpenCV 将图像旋转 90 度的最简单方法?

delphi - 是否可以调整 TStringField 以像 Delphi 中的 TWideStringField 一样工作?