Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 颜色协调:三和弦、补色、类似、单色_C#_.net_Colors_Color Scheme - Fatal编程技术网

C# 颜色协调:三和弦、补色、类似、单色

C# 颜色协调:三和弦、补色、类似、单色,c#,.net,colors,color-scheme,C#,.net,Colors,Color Scheme,我需要颜色数学方面的帮助。我有一个主色,我需要选择其他和谐的颜色。 我需要这样的色彩和谐:三和弦、补色、类比、单色。我需要C#的。 感谢您的帮助。 谢谢 迪玛。好的,一切都围绕着你书中描述的色轮旋转。我建议在数组中硬编码这些颜色。我假设你的主色总是这12种颜色中的一种 我们需要的一个辅助方法是将值环绕数组,这样颜色-1就变成了颜色12(数组中的索引11): 现在一切都准备好了(假设您有一个名为ColorWheelArray的数组,按顺序包含颜色) 特里亚达: Color[] GetTriadaC

我需要颜色数学方面的帮助。我有一个主色,我需要选择其他和谐的颜色。 我需要这样的色彩和谐:三和弦、补色、类比、单色。我需要C#的。 感谢您的帮助。 谢谢
迪玛。

好的,一切都围绕着你书中描述的色轮旋转。我建议在数组中硬编码这些颜色。我假设你的主色总是这12种颜色中的一种

我们需要的一个辅助方法是将值环绕数组,这样颜色-1就变成了颜色12(数组中的索引11):

现在一切都准备好了(假设您有一个名为ColorWheelArray的数组,按顺序包含颜色)

特里亚达:

Color[] GetTriadaColors(Color color)
{
    int colorIndex = GetColorWheelIndex(color, ColorWheelArray.Length);
    return new Color[]
        {
            color,
            ColorWheelArray[WrapColor(colorIndex + ColorWheelArray.Length / 3)],
            ColorWheelArray[WrapColor(colorIndex + 2 * ColorWheelArray.Length / 3)]
        };
}
恭维:

Color GetComplimentColor(Color color)
{
    int colorIndex = GetColorWheelIndex(color, ColorWheelArray.Length);
    return ColorWheelArray[WrapColor(colorIndex + ColorWheelArray.Length / 2)];
}
类似的:

Color[] GetAnalogousColors(Color color)
{
    int colorIndex = GetColorWheelIndex(color, ColorWheelArray.Length);
    return new Color[] { color,
                         ColorWheelArray[WrapColor(colorIndex + 1)],
                         ColorWheelArray[WrapColor(colorIndex + 2)] };
}
由于我不知道单色的定义,我将把它留给你。:)


编辑:如果你想让它与任何颜色一起工作,那么我不是100%确定,但是我有一个想法


该网站称,轮子是通过在RYB颜色空间(而不是C#使用的RGB)中拾取颜色创建的。因此,假设您可以计算出您的颜色与控制盘上每种颜色的“距离”(通过将两者转换为RYB并进行比较),然后使用我的函数获取其他颜色。最后,在每个结果中添加您的颜色和最接近的控制盘颜色(在RYB颜色空间中)之间的差异,最后转换回RGB以存储为颜色对象。

如果您给我们一些您需要的和声定义,您可能会得到更多答案。这样,回答者只需要知道C音,而不需要知道C音和颜色的和谐度我想我会给你们定义颜色和声:三和弦、补音、类比、单色。还是我错过了什么?@user604790。这些不是定义,只是不同颜色和声的列表。我的意思是让你们解释一下什么是triada,什么是补码,什么是类比,什么是单色。这里有一个链接可以解释:谢谢你们的帮助,这很好。但我需要为每种颜色找到和谐的颜色,而不仅仅是12种。谢谢你需要给我更多的继续。该页面没有显示如何对其他颜色执行此操作。另外,请看我的编辑答案底部。我也不知道,所以我问了这个关于StackOverflow的问题。好吧,我想除非有人碰巧知道颜色理论,否则你可能不得不在我的答案底部进行编辑。你可以试着在graphicdesign.stackexchange.com上问这个问题,如果你能得到一个很好的解释,那么这里的人可以帮助你处理实际的代码。好的,我没有时间为你做这个,但要做你想做的,你需要将RGB颜色转换成CIELCH颜色空间,然后执行上面url中描述的转换,然后转换回RGB。我找不到很多关于从RGB到CIELCH再到CIELCH的翻译信息,因为RGB依赖于设备。我确实找到了一个excel电子表格的链接,该电子表格使用公式进行计算,所以您可以查看它来计算出来。一旦完成,根据更改颜色返回颜色应该很容易。
Color GetComplimentColor(Color color)
{
    int colorIndex = GetColorWheelIndex(color, ColorWheelArray.Length);
    return ColorWheelArray[WrapColor(colorIndex + ColorWheelArray.Length / 2)];
}
Color[] GetAnalogousColors(Color color)
{
    int colorIndex = GetColorWheelIndex(color, ColorWheelArray.Length);
    return new Color[] { color,
                         ColorWheelArray[WrapColor(colorIndex + 1)],
                         ColorWheelArray[WrapColor(colorIndex + 2)] };
}