在Delphi7中使按钮图示符具有透明背景?

在Delphi7中使按钮图示符具有透明背景?,delphi,delphi-7,Delphi,Delphi 7,我有四个TSpeedButton对象,每个对象都有一个BMP文件,作为按钮图像的图示符。无论出于何种原因,delphi决定其中两个按钮图像应具有透明背景,两个按钮图像应具有白色背景。我自己创建了位图,所以它们都保存在相同的颜色深度,并使用纯白色(不是几乎白色的阴影)作为背景,并且在图像的所有四个角像素中都有背景色 为什么有些字形图像会显示为透明背景,而有些则不是?使背景透明的标准是什么?如何使我的按钮图像都具有透明背景,而不是其中一半具有透明背景?我在D5上遇到了类似的问题,我找到了一个解决方案

我有四个TSpeedButton对象,每个对象都有一个BMP文件,作为按钮图像的图示符。无论出于何种原因,delphi决定其中两个按钮图像应具有透明背景,两个按钮图像应具有白色背景。我自己创建了位图,所以它们都保存在相同的颜色深度,并使用纯白色(不是几乎白色的阴影)作为背景,并且在图像的所有四个角像素中都有背景色


为什么有些字形图像会显示为透明背景,而有些则不是?使背景透明的标准是什么?如何使我的按钮图像都具有透明背景,而不是其中一半具有透明背景?

我在D5上遇到了类似的问题,我找到了一个解决方案,因为我从未发现为什么会发生这种情况

定义比实际图像/图示符高一行的图像大小。这将强制从左上角开始写入图像,并在最后一行之前停止。这将强制使用不透明颜色,并且图像下方的额外行在视觉上不可见。


Delphi的glyph处理使用左下角的像素来确定透明颜色。所有与该颜色匹配的像素都应显示为透明。左下角的像素颜色是否与所有图示符匹配,以及是否与要透明的区域匹配?(如果没有这些图片,很难说问题出在哪里,但我想我会把它作为一个潜在的调查对象。)


似乎保留了正确答案(抱歉,无法接受评论作为正确答案!)。我使用的图像有一个阴影到达左下角,因此该角几乎为白色,其他角完全为白色。

Delphi的字形处理使用左下角的像素确定透明颜色。所有与该颜色匹配的像素都应显示为透明。左下角的像素颜色是否与所有图示符匹配,以及是否与要透明的区域匹配?(没有这些图像,很难说问题出在哪里,但我想我会把它作为一个潜在的调查对象发布。)我尝试了一张四个角都有白色像素的简单图像,在这里效果很好。