gpt4 book ai didi

c# - 如何使用 C# 混合颜色 "naturally"?

转载 作者:IT王子 更新时间:2023-10-29 03:53:17 33 4
gpt4 key购买 nike

我必须以自然的方式混合一些颜色。这意味着

blue + yellow = green 
blue + red = purple

等等。我得到的颜色是 RGB 值。当我尝试混合它们时,我得到了正确的“RGB”结果,例如

green + red = yellow
yellow + blue = white

但不是正确的“自然湿漆”结果。知道如何以自然方式混合 RGB 吗?

如果有人知道 Microsoft.Xna.Framework.Graphics 命名空间中的解决方案,那就太好了,但通用解决方案也会有所帮助:)


@杰巴祖兹:

Please post a code sample that shows what you're trying to do.

当然 - 这是我混合两种 RGB 颜色的函数。

public Color colorMixer(Color c1, Color c2)
{

int _r = Math.Min((c1.R + c2.R),255);
int _g = Math.Min((c1.G + c2.G),255);
int _b = Math.Min((c1.B + c2.B),255);

return new Color(Convert.ToByte(_r),
Convert.ToByte(_g),
Convert.ToByte(_b));
}

到目前为止,我在该线程中读到的内容非常有前途 - 我会将 C1 和 C2 转换为 Lab*,混合它们 - 将其转换回 RGB 并返回该颜色。

最佳答案

“自然湿漆”有点含糊;按照建议混合 CMYK 将不起作用,因为您仍在添加颜色。

如果您想要像 Photoshop 中那样的结果(如 Jon B 所检查的),您需要使用 L*a*b* 空间。 将 RGB 转换为 Lab 和说明的公式 is here .

实验室空间经过专门设计,线性变化对应于人眼感知的一定量的颜色变化。这很重要,因为例如我们对绿色比其他颜色更敏感,因为我们对颜色和亮度等变化的感知不同。

尝试目前建议的任何其他方法不仅会导致您不想要的颜色,而且也不会代表颜色的“外观恒定”变化,特别是如果您将其用于需要不断变化的事物像一个渐变。

关于c# - 如何使用 C# 混合颜色 "naturally"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/398224/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com