如何自动获得取决于背景的正确颜色?如果其背景图像较暗,则会自动将字体颜色更改为较亮的颜色。
有可能吗任何的想法?
最佳答案
大卫的答案通常运转良好。但是有一些选择,我将提及其中一些。首先,最幼稚的方法是
function InvertColor(const Color: TColor): TColor;
begin
result := TColor(Windows.RGB(255 - GetRValue(Color),
255 - GetGValue(Color),
255 - GetBValue(Color)));
end;
但这会遇到#808080问题(为什么?)。一个很好的解决方案是David的解决方案,但是对于某些不幸的背景色来说,它看起来非常糟糕。尽管文字肯定可见,但看起来很恐怖。一种这样的“不幸”背景色是#008080。
通常,如果背景为“浅色”,我希望文本为黑色,如果背景为“暗色”,则文本为白色。我这样
function InvertColor(const Color: TColor): TColor;
begin
if (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) > 384 then
result := clBlack
else
result := clWhite;
end;
另外,如果您使用的是Delphi 2009+,并且目标是Windows Vista +,则可能对
GlowSize
的TLabel
参数感兴趣。