두 가지 색상의 상대적 차이에 따라 그라데이션 색상을 재생하는 공식

StackOverflow https://stackoverflow.com//questions/11690613

  •  12-12-2019
  •  | 
  •  

문제

임의의 색상 값이 주어지면 해당 값과 그라디언트 오프셋 0 (아래)의 상대적인 차이를 어떻게 사용하여 나머지 오프셋의 색상을 조정하여 새로운 색상과 동일한 상대 관계가있는 것으로 나타납니다.원래 색상?

<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<LinearGradientBrush.GradientStops>
    <GradientStop Color="#FFDB0000" Offset="0" />
    <GradientStop Color="#FFB74134" Offset="0.6" />
    <GradientStop Color="#FFBA5643" Offset="0.85" />
    <GradientStop Color="#93C11E00" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
.

나의 과제는 상대 조정을 수행하기 위해 사용하기위한 수학 공식을 알아내는 것입니다.일단이 논리를 가지고 있으면 (C # /. net / wpf) 사용하는 특정 기술에서 비교적 쉽게 구현할 수 있어야합니다.

고맙습니다!

도움이 되었습니까?

해결책

해결책 :

색조가 채도 - 휘도 (HSL) 모델을 사용하여 결정했습니다.

  • 템플리트 그라데이션의 기본 색상과 각 템플릿 중심이 컬러의 상대 색조 차이가 있습니다.
  • 각 템플릿의 절대 포화 및 광도 값은 색상을 정지합니다.

새로운 그라디언트 멈춤을 생성하기 위해 사용자가 지정한 색상을 가져 와서 위에 계산 된 적절한 색상의 오프셋에 의해 색조를 이동 한 다음 위에서 결정된 값을 위에서 결정한 값으로 설정합니다.

http://en.wikipedia.org/wiki/hsl_and_hsv rgb-hsl 제공공식. http://blogs.msdn.com/b/cjacks./Archive/2006/04/12/575476.aspx HSL-to-RGB 변환을하는 방법을 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top