一尘不染

如何反转颜色?

c#

我知道这不会直接反转颜色,只会“反对”它。我想知道是否有人知道一种简单的方法(几行代码)来将颜色从任何给定的颜色反转?

目前,我有这个(这不完全是反转的定义,因为如果我将其传递为灰色/灰色,它将返回极其相似的内容,例如127、127、127):

const int RGBMAX = 255;

Color InvertMeAColour(Color ColourToInvert)
{
    return Color.FromArgb(RGBMAX - ColourToInvert.R, 
      RGBMAX - ColourToInvert.G, RGBMAX - ColourToInvert.B);
}

阅读 1898

收藏
2020-05-19

共1个答案

一尘不染

这取决于您“反转”颜色是什么意思

您的代码提供了“负”颜色。

您是否要寻找青色的红色,紫色的绿色,黄色的蓝色(依此类推)?如果是这样,则需要在HSV模式下转换RGB颜色(您将在此处进行转换)。

然后你只需要反转色彩值(变动Hue360-Hue),并重新转换为RGB模式。

编辑:亚历克斯Semeniuk提到,改变Hue(Hue + 180) % 360是更好的解决方案(它不倒置色调,但发现在色环相反的颜色)

2020-05-19