【问题标题】:How to display part of a bitmap transparent如何透明显示位图的一部分
【发布时间】:2012-01-12 20:22:31
【问题描述】:

我想在 Delphi 中对一些位图进行抗锯齿处理。该文件从文件加载,分配给图像,处理(apply_kernel)并将结果分配给另一个图像。在 Delphi 中,当Image.Transparent = True 时,左/下像素决定了透明颜色。我只使用 32 位图。

dump ('henon.bmp');
Image3.Picture.LoadFromFile ('henon.bmp');
apply_kernel (Image3.Picture.Bitmap, bitmap, kernel);
Image4.Picture.Bitmap := bitmap;
Image4.Picture.Bitmap.SaveToFile ('alias.bmp');
dump ('alias.bmp');

这适用于分配给 Image3 的加载位图,但不适用于分配给 Image4 的计算位图。左侧/底部的颜色保持不变(clWhite)。为了了解会发生什么,我将位图分别转储到文件中,每种颜色分别(见下面的转储)。我确实检查了图像的透明度,自动调整大小,中心和拉伸,位图是 32x32,图像也是。我也尝试设置TransparentColor := clWhite,但无济于事。我必须犯一个非常愚蠢的错误,但找不到。有人可以帮帮我吗?

编辑 Torbins 提醒我,我忘记了保留字节。它在某些位置设置为 128,实际上正是零的位置(请参阅更新的转储)。我做了几件事,最终产生了一个透明的位图: - 简单地将所有保留字节归零。 - 还有很多,直到所有这些都不起作用 - 使用分配工作,Draw 的工作不够奇怪,Sertac 的推理似乎很合理

无论如何,有效的代码是

dump ('henon.bmp');
Image3.Picture.LoadFromFile ('lorenz.bmp');
apply_kernel (Image3.Picture.Bitmap, bitmap, kernel);
Image4.Picture.Bitmap.SetSize (bitmap.Width, bitmap.Height);
//   Image4.Picture.Bitmap.Canvas.Draw (0, 0, bitmap); // <== does not work
Image4.Picture.Bitmap := bitmap;                   // <== works  
bitmap.SaveToFile ('alias.bmp');
dump ('alias.bmp');

@Sertac,也许我的 Draw 做错了什么?

@Torbins,将所有保留字节归零是相当粗鲁的,我将在 alpha 通道中尝试一些你的建议

非常感谢大家!

henon.bmp:

    Red
        0: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        1: 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        2: 255 255 255   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        3: 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        4: 255 255 255 255 255 255 255 255   0   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        5: 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        6: 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255
        7: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255
        8: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255
        9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0   0 255 255 255 255 255 255
       10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255   0   0   0 255 255 255 255 255
       11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255   0   0   0 255 255 255
       12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255   0   0 255 255 255
       13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255   0   0 255 255
       14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255   0   0 255
       15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255   0 255   0   0 255
       16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255   0 255
       17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255   0   0 255
       18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255   0   0 255
       19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255   0   0 255 255
       20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255   0   0 255 255 255
       21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255   0   0 255 255 255 255
       22: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255   0   0 255 255 255 255 255
       23: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255   0   0 255 255 255 255 255 255 255
       24: 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255 255 255   0   0 255 255 255 255 255 255 255 255 255
       25: 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255
       26: 255 255 255 255 255 255 255 255 255   0 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255
       27: 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       28: 255 255 255 255 255 255 255 255 255 255   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       29: 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       30: 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       31: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

    Green
        0: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        1: 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        2: 255 255 255   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        3: 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        4: 255 255 255 255 255 255 255 255   0   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        5: 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        6: 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255
        7: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255 255
        8: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0 255 255 255 255 255 255 255 255 255
        9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0   0   0   0 255 255 255 255 255 255
       10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255   0   0   0 255 255 255 255 255
       11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255   0   0   0 255 255 255
       12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255   0   0 255 255 255
       13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255   0   0 255 255
       14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255   0   0 255
       15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255   0 255   0   0 255
       16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255   0 255
       17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255   0   0 255
       18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255   0   0 255
       19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255   0   0 255 255
       20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255   0   0 255 255 255
       21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255   0   0 255 255 255 255
       22: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255   0   0 255 255 255 255 255
       23: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255   0   0 255 255 255 255 255 255 255
       24: 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0 255 255 255 255 255 255   0   0 255 255 255 255 255 255 255 255 255
       25: 255 255 255 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255
       26: 255 255 255 255 255 255 255 255 255   0 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255
       27: 255 255 255 255 255 255 255 255 255 255 255 255 255   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       28: 255 255 255 255 255 255 255 255 255 255   0   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       29: 255 255 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       30: 255 255 255 255 255   0   0   0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       31: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

    Blue
        0: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        1: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        2: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        3: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        4: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        5: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        6: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        7: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        8: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       22: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       23: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       24: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       25: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       26: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       27: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       28: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       29: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       30: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       31: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255


reserved
    0:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    1:   0 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    2:   0   0   0 128 128 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    3:   0   0   0   0   0 128 128 128 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    4:   0   0   0   0   0   0   0   0 128 128 128 128 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    5:   0   0   0   0   0   0   0   0   0   0   0 128 128 128 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    6:   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128 128 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0
    7:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128 128 128 128   0   0   0   0   0   0   0   0   0   0
    8:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128 128 128 128   0   0   0   0   0   0   0   0   0
    9:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128 128 128 128 128   0   0   0   0   0   0
   10:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0 128 128 128   0   0   0   0   0
   11:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128   0   0 128 128 128   0   0   0
   12:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0 128 128   0   0   0
   13:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128   0   0   0 128 128   0   0
   14:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0   0 128 128   0
   15:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128   0 128   0 128 128   0
   16:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0   0   0 128   0
   17:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128   0   0   0   0 128 128   0
   18:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0   0   0 128 128   0
   19:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128   0   0   0   0 128 128   0   0
   20:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0   0   0 128 128   0   0   0
   21:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128   0   0   0   0 128 128   0   0   0   0
   22:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0   0   0   0 128 128   0   0   0   0   0
   23:   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0   0   0   0 128 128   0   0   0   0   0   0   0
   24:   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128   0   0   0   0   0   0 128 128   0   0   0   0   0   0   0   0   0
   25:   0   0   0   0   0   0   0   0   0   0 128 128 128   0   0   0   0   0   0 128 128 128   0   0   0   0   0   0   0   0   0   0
   26:   0   0   0   0   0   0   0   0   0 128   0   0   0   0   0   0 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0
   27:   0   0   0   0   0   0   0   0   0   0   0   0   0 128 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   28:   0   0   0   0   0   0   0   0   0   0 128 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   29:   0   0   0   0   0   0   0 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   30:   0   0   0   0   0 128 128 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   31: 128   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

别名.bmp:

    Red
        0: 194 154 148 106  98  98 123 156 205 238 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        1: 207 177 172 133 114  95 102 121 159 191 216 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        2: 212 184 179 144 127 110 115 127 150 173 197 214 226 231 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        3: 229 216 214 191 168 133 110  98  98 110 127 150 168 185 197 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        4: 255 248 249 231 214 197 173 150 127 110  98  98  92  92 110 150 185 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255
        5: 255 255 255 255 249 237 226 214 197 173 150 121  92  69  69  86 110 144 173 197 214 231 249 255 255 255 255 255 255 255 255 255
        6: 255 255 255 255 255 255 255 249 237 226 214 185 150 110  86  81  75  69  81 110 150 185 220 243 255 255 255 255 255 255 255 255
        7: 255 255 255 255 255 255 255 255 255 255 249 231 214 197 173 139  98  69  52  46  69 110 162 202 226 237 249 255 255 255 255 255
        8: 255 255 255 255 255 255 255 255 255 255 255 255 249 237 226 202 162 110  69  40  34  52  98 150 179 197 220 243 255 255 255 255
        9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 185 144  92  52  40  52  81 110 139 168 202 231 249 255 255
       10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 202 162 110  75  57  75  86 110 127 156 191 231 248 255
       11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 179 139  92  81  92 121 121 121 133 185 229 255
       12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115  86  92 127 139 133 127 156 197 238
       13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150  98  98 139 162 144 121 127 159 204
       14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173  98  75 110 168 168 144 121 127 161
       15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 197 115  81 104 162 173 150 110 114 153
       16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173  98  75 110 179 208 185 133 114 153
       17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150  98  98 150 208 214 168 121 114 153
       18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115  92 115 179 220 202 156 127 127 161
       19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 185 144 115 121 162 208 202 168 139 133 159 204
       20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 237 214 185 144 121 121 162 197 197 168 144 144 168 204 238
       21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 214 202 191 168 144 144 162 185 197 179 150 144 168 208 242 255
       22: 255 255 255 255 255 255 255 255 255 255 255 255 249 231 220 202 179 150 150 156 168 168 185 197 185 162 156 173 208 243 255 255
       23: 255 255 255 255 255 255 255 255 255 249 237 226 220 208 191 162 150 150 173 179 179 173 179 173 173 185 197 220 243 255 255 255
       24: 255 255 255 255 255 255 255 255 243 226 214 202 185 173 173 179 179 173 179 179 173 156 162 185 208 220 231 249 255 255 255 255
       25: 255 255 255 255 255 255 255 249 231 202 173 162 162 173 179 179 173 179 179 162 150 156 185 208 231 249 255 255 255 255 255 255
       26: 255 255 255 255 255 255 255 243 226 197 179 173 173 168 168 168 150 150 162 185 197 202 220 243 255 255 255 255 255 255 255 255
       27: 255 255 255 255 255 255 249 231 214 197 185 168 156 144 139 139 150 179 202 220 226 237 249 255 255 255 255 255 255 255 255 255
       28: 255 255 255 255 249 231 214 202 191 173 162 150 144 150 173 191 202 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255
       29: 255 255 255 249 237 208 179 150 150 162 185 197 202 202 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       30: 255 255 255 242 216 172 146 140 172 197 216 223 229 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       31: 255 255 255 246 230 205 189 180 197 222 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

    Green
        0: 194 154 148 106  98  98 123 156 205 238 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        1: 207 177 172 133 114  95 102 121 159 191 216 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        2: 212 184 179 144 127 110 115 127 150 173 197 214 226 231 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        3: 229 216 214 191 168 133 110  98  98 110 127 150 168 185 197 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255
        4: 255 248 249 231 214 197 173 150 127 110  98  98  92  92 110 150 185 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255
        5: 255 255 255 255 249 237 226 214 197 173 150 121  92  69  69  86 110 144 173 197 214 231 249 255 255 255 255 255 255 255 255 255
        6: 255 255 255 255 255 255 255 249 237 226 214 185 150 110  86  81  75  69  81 110 150 185 220 243 255 255 255 255 255 255 255 255
        7: 255 255 255 255 255 255 255 255 255 255 249 231 214 197 173 139  98  69  52  46  69 110 162 202 226 237 249 255 255 255 255 255
        8: 255 255 255 255 255 255 255 255 255 255 255 255 249 237 226 202 162 110  69  40  34  52  98 150 179 197 220 243 255 255 255 255
        9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 185 144  92  52  40  52  81 110 139 168 202 231 249 255 255
       10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 202 162 110  75  57  75  86 110 127 156 191 231 248 255
       11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 179 139  92  81  92 121 121 121 133 185 229 255
       12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115  86  92 127 139 133 127 156 197 238
       13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150  98  98 139 162 144 121 127 159 204
       14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173  98  75 110 168 168 144 121 127 161
       15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 197 115  81 104 162 173 150 110 114 153
       16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173  98  75 110 179 208 185 133 114 153
       17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150  98  98 150 208 214 168 121 114 153
       18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115  92 115 179 220 202 156 127 127 161
       19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 185 144 115 121 162 208 202 168 139 133 159 204
       20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 237 214 185 144 121 121 162 197 197 168 144 144 168 204 238
       21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 214 202 191 168 144 144 162 185 197 179 150 144 168 208 242 255
       22: 255 255 255 255 255 255 255 255 255 255 255 255 249 231 220 202 179 150 150 156 168 168 185 197 185 162 156 173 208 243 255 255
       23: 255 255 255 255 255 255 255 255 255 249 237 226 220 208 191 162 150 150 173 179 179 173 179 173 173 185 197 220 243 255 255 255
       24: 255 255 255 255 255 255 255 255 243 226 214 202 185 173 173 179 179 173 179 179 173 156 162 185 208 220 231 249 255 255 255 255
       25: 255 255 255 255 255 255 255 249 231 202 173 162 162 173 179 179 173 179 179 162 150 156 185 208 231 249 255 255 255 255 255 255
       26: 255 255 255 255 255 255 255 243 226 197 179 173 173 168 168 168 150 150 162 185 197 202 220 243 255 255 255 255 255 255 255 255
       27: 255 255 255 255 255 255 249 231 214 197 185 168 156 144 139 139 150 179 202 220 226 237 249 255 255 255 255 255 255 255 255 255
       28: 255 255 255 255 249 231 214 202 191 173 162 150 144 150 173 191 202 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255
       29: 255 255 255 249 237 208 179 150 150 162 185 197 202 202 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       30: 255 255 255 242 216 172 146 140 172 197 216 223 229 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
       31: 255 255 255 246 230 205 189 180 197 222 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

    Blue (omitted as it is all 255)

【问题讨论】:

  • 你有哪个版本的Delphi?
  • @Arnold - Re - 有问题的问题:调用“SetSize”后,您有一个 32x32 白色位图。如果您最终得到一个白色背景的图像,那么绘图将按预期工作。如果不是,不知道,可能是由于 alpha 通道,我会尝试将像素格式设置为“pf24bit”。

标签: delphi bitmap transparency delphi-xe


【解决方案1】:

您必须绘制位图,分配将不起作用。例如,请参阅documentation for TransparentColor

确定位图的哪种颜色是透明的 位图已绘制。


但很可能你最终还是会得到一个白色的背景。事情是这样的:如果你使用像Image4.Picture.Bitmap.Canvas.Draw(.. 这样的东西,图像将被绘制,这样在源图像中具有透明颜色的像素将不会被绘制。也就是说,具有这些像素的目标图像的背景不会改变。那些未更改的像素是白色的(新位图的默认背景颜色)。所以你必须使用这样的东西:

Image4.Picture.Bitmap.Canvas.Brush.Color := clGreen; // specify your background color
Image4.Picture.Bitmap.SetSize(32, 32);               // now you have a green bitmap
Image4.Picture.Bitmap.Canvas.Draw(0, 0, bitmap); // draw non-transparent parts over green bg.

【讨论】:

  • 感谢您和 Glenn1234 的建议。它仍然不起作用,所以我认为它必须在位图中。我会做一些实验,一旦我知道更多就会回来。谢谢。
  • @Arnold - 不客气。万一可能发生误解,'.Transparentxx' 属性与 Alpha 通道无关。
  • 我知道,据我所知,左/下是一些解决方法,因为位图在定义时没有透明度。
【解决方案2】:

我想在 Delphi 中对一些位图进行抗锯齿处理。

如果您想使用 alpha-transparency 进行绘制,那么您需要检查位图的字节 (rgbReserved)。在现代 Delphi 版本中,第四个字节的使用是通过 TBitmap.AlphaFormat 控制的。您需要将其设置为 afDefined ,仅此而已。在较旧的 Delphi 版本中,您需要通过 AlphaBlend 函数手动绘制位图。 同样对于较旧的 Delphi 版本,我已经创建了这个单元,也许它会以某种方式帮助你:http://mikolatorbins.narod.ru/AlphaImageUtils.pas(它可以免费使用)。

【讨论】:

  • 见我上面的更新,这个建议对我有帮助。顺便说一句,令人印象深刻的代码。你到底用它做什么?
  • 我创建了它来测试 Vista 中 Aero 玻璃上的绘图。它可以绘制带有第四字节集的png和位图。它还可以将两个图像合二为一(用于缓冲绘图)。
【解决方案3】:

借用我这里的 Delphi 帮助文档。

 procedure TForm1.Button1Click(Sender: TObject);
  var
    mybitmap: TBitmap;
  begin
    mybitmap := TBitmap.Create;
    try
      with mybitmap do begin
        LoadFromFile('C:\Program Files\Borland\Delphi 3\Images\Splash\256color\factory.bmp');
        Transparent := True;
        TransParentColor := mybitmap.canvas.pixels[25,25];
        Form1.Canvas.Draw(0,0,myBitMap);
        TransparentMode := tmAuto;   // Transparent color now is clDefault =  TColor($20000000);
        Form1.canvas.Draw(250,0,myBitMap);
        end;
    finally
       myBitmap.free;
    end;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多