2016-06-16 2 views
0

나는 X 시리즈 라인을 모두 다른 "좋은"색상으로 그려보고 싶다. "nice"는 밝고 다른 것을 의미합니다. KnownColor에서 "좋은"색상을 어떻게 선택할 수 있습니까?

내가 지금 뭐하는 거지입니다 :

var colors = Enum.GetValues(typeof(KnownColor)); 

int c = -1; 
foreach (var ser in AllSeries) 
{ 
    c++; 
    chart.PlotDataSeries(Color.FromKnownColor((KnownColor)colors.GetValue(c % 100 + 1)),); 
} 

그러나 KnownColor 반복 "시스템 메뉴"를 많이 가지고 있기 때문에 이것은 나에게 주로 검은 색과 회색 비슷한 단조로운 색상을 많이주는 타입 색상 포함 .

+4

'색상 []'에 멋진 색상을 저장하십시오. –

+0

"멋진"색상은 매우 독창적 인 것처럼 보입니다. 또한 "다르지만 또한 밝다"는 반박되고 모순 된 것처럼 보인다. # 000000와 #FFFFFF는 당신이 얻을 수있는 것과 거의 다르며, 하나는 분명히 밝습니다. 나는 당신이 무엇을 찾고 있는지 정말로 모르겠다.이 질문은 다음 중 하나와 같이 들린다. 의견, 튜토리얼 사이트, 컬러 디자인, 정말로 프로그래밍 질문은 없다 - 질문의 유형 SO : O – Kritner

+0

에 올릴 수 있습니다. KnownColor에 대한 대안이나 특정 유형을 "선택"하는 방법이 있는지 묻습니다. – ManInMoon

답변

0

제안은 함께 라인 @ 팀 Schmelter이 반복처럼이 적합하지 않습니다

에 의해 코멘트에 만들어진 논제하지만, 적어도 색상이 구별된다.

public Color GetNiceColor(int n) 
{ 
    Color[] NiceColors = new Color[]{Color.Red,Color.Yellow,Color.Blue,Color.Green,Color.Brown,Color.DarkGray,Color.Orange,Color.Magenta,Color.Cyan,Color.Magenta,Color.Lime}; 
    int selection = n % NiceColors.Count(); 

    return NiceColors[selection]; 
} 
0

한 가지 방법은 "색 공간을 탐색하는 것"입니다. 저는 C# 프로그래머가 아니지만 다이어그램 작성에 수동으로 사용했던 방법은 Red-Green-Blue 대신 Hue-Saturation-Value 색 공간을 사용하는 것입니다. 나는 수동으로 "좋은"색을 선택하고 싶습니다. 그런 다음 색조의 값 공간을 필요한 색상 수로 나누고이 값을 색조 값의 증분으로 사용하십시오. 이렇게하면 효과적으로 채도와 밝기가 동일하기 때문에 서로 잘 어울리는 고르게 분포 된 색상을 얻을 수 있습니다.

좀 더 자세하게

나는 현재 .NET/C#을 API를 살펴했다 및 RGB 값 이외에서 임의의 색상을 만들 수있는 쉬운 방법이처럼은 보이지 않는다. 다음은 Javascript + HTML에서 설명한 램프의 예입니다. HSV 또는 HSL 공간에서 RGB 로의 변환은 언어에 따라 다르지만 Creating a C# Color from HSL values에 대한 답이 도움이됩니다.

function setColor(id, hue) { 
 
    var elm = document.getElementById(id); 
 
    var saturation = document.getElementById("saturation").value; 
 
    var lightness = document.getElementById("lightness").value; 
 
    elm.style.color = "hsl(" + hue + ", " + saturation + "%, " + 
 
         lightness + "%)"; 
 
} 
 

 
function setColors() { 
 
    setColor("first", 0 * (360/5)); 
 
    setColor("second", 1 * (360/5)); 
 
    setColor("third", 2 * (360/5)); 
 
    setColor("fourth", 4 * (360/5)); 
 
}
<p id="first">First Color<p> 
 
<p id="second">Second Color</p> 
 
<p id="third">Third Color</p> 
 
<p id="fourth">Fourth Color</p> 
 

 
<form> 
 
    Saturation: <input id=saturation value=75><br> 
 
    Lightness: <input id=lightness value=40><br> 
 
    <input type=submit onclick="javascript:setColors()" value=Update> 
 
</form>

0

나는 색상의 순서가 순서를 따르지 않는이 가능하다고 생각하지 않습니다. 좋은 색조를 얻으려면 좋은 트릭을 찾으십시오. 원하는 색상을 찾고 3 가지 R, G 및 B 값을 얻은 다음 16 진수 코드 쌍의 순서를 혼합하십시오. 그래서 ...

Colour1=C4 89 FF 
Colour2=C4 FF 89 
Colour3=FF 89 C4 
Colour4=etc. 

나는 이것에 대한 언급이없는 -이 내가 함께 좋아 보이는 색상의 빠른 순서가 필요하면 내가 그냥 뭐 때문이다.

색상 램프를보고 멋진 시퀀스를 얻을 수도 있습니다 : 예. http://www.pixelfor.me/crc/F0000032

예를 들어 사람들이 서로 잘 어울리는 색상 시퀀스에 투표하는 많은 웹 사이트 중 하나. http://colorhunt.co/

관련 문제