2010-09-28 50 views
0

我需要在运行时添加15行透明像素的顶部和底部20个透明像素。如何在32位位图图像之上和之下添加透明像素

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

如果操作后的图像是400x75应该是400×(75 + 15 + 20)= 400x110

如何执行此任务?

回答

2

没有像“透明”像素这样的东西。你所能做的就是为渲染器添加标签,以便它知道它们不应该被显示。这里有标注,但哪一个你使用的3层最常用的方法取决于你所做的渲染上:

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

,你的情况,因为你似乎只复制了一个长方形的矩形,另一种形式给出,这将是:创建一个同样大小的最终图像的画布,复制下矩形它,绘制到它的顶层。

+0

嗨,谢谢,你可以发布一些代码实现画布的想法?这似乎适合我的方法。 – LaBracca 2010-09-28 09:52:40

+0

err ...这真的很平凡的代码,你知道:TCanvas.CopyRect,你就完成了。 – Stephane 2010-09-28 10:10:15