2011-05-11 61 views
1

我需要顏色數學方面的幫助。我有一個主要顏色,我需要獲得其他顏色的選擇和諧。 我需要這樣的顏色和聲:三角,補色,類似,單色。我需要他們在C#中。 任何幫助表示讚賞。 謝謝, 迪馬。色彩和聲:三角形,補色,類似,單色

+2

如果你給我們一些你需要的和聲定義,你可能會得到更多的答案。這樣回答者只需要知道C#,而不是C#和色彩和聲。 :) – 2011-05-11 09:16:49

+0

我以爲我給你定義顏色和聲:三田,補碼,類似,單色。或者我想念什麼? – F0rc0sigan 2011-05-11 12:35:57

+0

@ user604790。這些不是定義,只是一個不同顏色和諧的列表。我的意思是你要包括一個關於三角形的解釋,補充是什麼,類似是什麼,單色是什麼。 – 2011-05-11 12:37:54

回答

3

好吧,一切都圍繞着您的link中描述的色輪。我建議在數組中對這些顏色進行硬編碼。我假設你的主色一直是其中之一12.

我們將需要的一個輔助方法是將數組包圍在數組周圍的值,例如,顏色-1變爲顏色12(索引11陣列):

int WrapColor(int colorIndex, int numWheelColors) 
{ 
    while(colorIndex < 0) 
    { 
     colorIndex += numWheelColors; 
    } 

    colorIndex = colorIndex % numWheelColors; 
} 

我們還需要一個輔助方法,將獲得的色輪色彩的指數:

int GetColorWheelIndex(Color color) 
{ 
    if (ColorWheelArray.Contains(color)) 
     return ColorWheelArray.IndexOf(color); 
    else 
     throw new InvalidArgumentException("color"); 
} 

現在一切都到位(假設你有所謂的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值以存儲爲Color對象。

+0

感謝您的幫助,它是偉大的。但是,我需要爲每種顏色找到色彩和諧,但不僅僅是12.謝謝 – F0rc0sigan 2011-05-11 14:15:44

+0

然後,你需要給我更多的東西繼續下去。該頁面不顯示如何爲其他顏色執行此操作。另請參閱我的編輯底部的答案。 – 2011-05-11 14:17:38

+0

我也不知道,所以我在StackOverflow上問這個問題。 – F0rc0sigan 2011-05-11 14:31:49