如何在32位位图图像的上方和下方添加透明像素

时间:2010-09-28 09:04:51

标签: delphi image-processing delphi-2009

我需要在运行时添加一个内存图像,顶部有15行透明像素,底部有20行。

图像加载到TcxImagelist(来自DevExpress Express Library)中,因此可以将它们检索为32位位图。

如果操作后图像为400x75应为400x(75 + 15 + 20)= 400x110

如何执行此任务?

1 个答案:

答案 0 :(得分:2)

没有“透明”像素这样的东西。您所能做的就是为渲染器标记它们,以便它们知道它们不应该被显示。以下是3种最常用的标记方法,但您使用的方法取决于您何时进行渲染:

  • 使用透明度贴图:第二个像素图,指示每个像素的透明度“级别”。然后渲染使用它作为加权值来组合最终颜色的顶层和底层。如果您只想要二进制透明度(不透明/透明),您可以使用位图并在每个像素上使用简单的XOR,这使得它非常快。
  • 定义“透明色”。然后,您可以使用透明色和底层对其进行异或。也非常快,不需要任何额外的存储空间。但它确实有一些副作用(例如,在顶层图像中不能使用一种颜色)
  • 使用32位位图的最后一个字节作为透明度级别(alpha通道)。实际上,您将透明度贴图(255个不同的透明度级别)与图像存储在一起。

现在,在你的情况下,因为你似乎只是在一个矩形上复制一个矩形,另一个方法是:创建一个与最终图像大小相同的画布,复制它上面的下方矩形和绘制在它上面分层。