2011-03-24 9 views
7

다른 항목을 구별하기 위해 색상을 지정해야합니다. 간단한 경우 : 고객에 따라 다른 색상의 행을 주문하십시오.시각적으로 뚜렷한 색상 목록을 얻으려면 어떻게해야합니까?

사용자가 모든 고객에게 색상을 선택하게하고 싶지는 않습니다. 런타임에이를 수행하고 싶습니다.

이 "레드"와 "화이트"... 물론

있을 경우 하나의 고객이 내가 i과를 사용하여 내 GimmeRandomColour(i: index) 자신의 함수를 만들 수있다 "빨간색"사용이 있다면 RGB 좋은 무작위 색깔을 창조하는 기능 (그러나이 경우에는 좋은 색깔 창조는 까다로울 수있다). 또는 i이 0 인 경우 clRed를 주면 (이 방법으로 많은 색상을 만들면 문제가 될 수 있습니다) 말할 수 있습니다.

허용되는 대비 수준에서 "좋은 색상 목록"을 얻으려면 어떻게해야합니까?

+0

기본적으로 제공되지 않습니다. 그것은 내장 함수를 제공하기에는 너무 구체적입니다. –

+1

자신의 팔레트를 만들고 대체없이 무작위 샘플링을 사용하십시오. –

답변

7

델파이의 내장 함수가 없습니다. 즐거운 색상 구성표를 생성하는 방법은이 질문을 참조하십시오.

Algorithm to randomly generate an aesthetically-pleasing color palette

+0

여기에 좋은 참고 자료가 있습니다. –

+0

좋은 링크지만 내 질문 끝에 "무작위"로 쓴 것은 정확하지 않습니다. 나는 주어진 가치에 대해 항상 같은 색깔을 원한다. 0의 경우와 같은 결과 결과 : = clRed; 1 결과 : = clBlue; 2 ...하지만 나는 i = 100에 대해서도 의미가있는 것을 원한다. 현실적으로 나는 50보다 작은 값을 사용한다. 물론 나는 50 개의 색상을 harcode 할 수 있기 때문에 괜찮을 것이다. – LaBracca

+0

@ user193655 주어진 I에 대해 항상 동일한 값을 얻으려면, 모든 다른 것들에 대해 임의의 제안 알고리즘을 사용하여 새 색상을 생성하고 해당 색상으로 해당 색상을 바인딩합니다. 그러면 이후 getColorFor (I)와 동일한 색상을 얻을 수 있습니다. 전화. 다른 프로그램 실행에 대해 동일한 색상을 원하면 I = ColorValue 바인딩을 데이터베이스, 레지스트리, Ini 또는 구성 파일에 저장하십시오. – jachguate

2

일반적인 접근법은 각 RGB 색상 구성 요소에 대해 $ 00, $ 33, $ 66, $ 99, $ CC 및 $ FF (Random(6) * $33) 값을 사용하는 것입니다.

이렇게하면 안전하고 사용하기 쉬운 216 가지 색상이됩니다.

wikipedia에 대한 예제를 참조하십시오.

+0

"각 RGB ** 구성 요소 **"를 의미합니다. –

+0

@ Andreas, 원래는 "각 빨강, 초록 및 파랑 색"을 의미했지만 새로운 의미는 보지 않고 짧게했습니다. ** 구성 요소 **는 그럼에도 불구하고 더 정확한 용어입니다. –

관련 문제