如何自动获得取决于背景的正确颜色?如果其背景图像较暗,则会自动将字体颜色更改为较亮的颜色。
有可能吗任何的想法?

最佳答案

大卫的答案通常运转良好。但是有一些选择,我将提及其中一些。首先,最幼稚的方法是

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 +,则可能对GlowSizeTLabel参数感兴趣。

07-27 14:53