【问题标题】:how to add transparent pixels above and below a 32 bit bitmap images如何在 32 位位图图像上方和下方添加透明像素
【发布时间】:2010-09-28 17:22:28
【问题描述】:

我需要在运行时向内存图像添加顶部 15 行透明像素和底部 20 行透明像素。

图像被加载到 TcxImagelist(来自 DevExpress Express 库)中,因此可以作为 32 位位图检索。

如果图像是 400x75 处理后应该是 400x(75+15+20) = 400x110

如何执行此任务?

【问题讨论】:

    标签: delphi image-processing delphi-2009


    【解决方案1】:

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

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

    现在,在您的情况下,由于您似乎只是在矩形上复制一个矩形,另一种方法是:创建一个与最终图像大小相同的画布,复制其上的下矩形并绘制叠加在上面。

    【讨论】:

    • 嗨,谢谢,你能发布一些实现画布想法的代码吗?这似乎适合我的方法。
    • err... 这真的是微不足道的代码,你知道:TCanvas.CopyRect 就完成了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多