컬러 작업을 위한 멋진 기능 세트! 감사합니다.
그러나 완전한 행복을 위해 주어진 간격에있는 숫자를 색상으로 변환하는 기능이 부족합니다 (함수의 도움으로 원하는대로 색상을 변환 할 수 있습니다).
저는 그런 원시적인 구조를 사용합니다:
//+------------------------------------------------------------------+ //|JQS RainbowColour v1.0.0| //|저작권 © 2010, JQS aka Joo. | //| http://www.mql4.com/ru/users/joo | //| https://www.mql5.com/ko/users/joo | //+------------------------------------------------------------------+ color RainbowColor(double BrushIn,double min,double max) { string R,G,B; int temp; double Brush=ScaleColor(BrushIn,min,max,0.0,100.0); //하한값 미만인 경우 if (Brush<0.0) { R="255"; G="0"; B="0"; return(StringToColor("C'"+R+","+G+","+B+"'")); } //상한값보다 큰 경우 if (Brush>100.0) { R="255"; G="0"; B="255"; return(StringToColor("C'"+R+","+G+","+B+"'")); } //빨간색에서 노란색으로 255.0.0 -> 255.255.255.0 if (Brush>=0.0 && Brush<20.0) { R="255"; temp=(int)MathRound(ScaleColor(Brush,0.0,20.0,0.0,255.0)); G=(string)temp; B="0"; return(StringToColor("C'"+R+","+G+","+B+"'")); } //-------------------------------------------- //노란색에서 녹색으로 255.255.0 -> 0.255.0 if (Brush>=20.0 && Brush<40.0) { temp=(int)(255.0-MathRound(ScaleColor(Brush-20.0,0.0,20.0,0.0,255.0))); R=(string)temp; G="255"; B="0"; return(StringToColor("C'"+R+","+G+","+B+"'")); } //-------------------------------------------- //녹색에서 파란색으로 0.255.0 -> 0.255.255.255 if (Brush>=40.0 && Brush<60.0) { R="0"; G="255"; temp=(int)(MathRound(ScaleColor(Brush-40.0,0.0,20.0,0.0,255.0))); B=(string)temp; return(StringToColor("C'"+R+","+G+","+B+"'")); } //-------------------------------------------- //청록색에서 파란색으로 0.255.255 -> 0.0.255 if (Brush>=60.0 && Brush<80.0) { R="0"; temp=(int)(255.0-MathRound(ScaleColor(Brush-60.0,0.0,20.0,0.0,255.0))); G=(string)temp; B="255"; return(StringToColor("C'"+R+","+G+","+B+"'")); } //-------------------------------------------- //파란색에서 보라색으로 0.0.255 -> 255.0.255 if (Brush>=80.0 && Brush<=100.0) { temp=(int)(MathRound(ScaleColor(Brush-80.0,0.0,20.0,0.0,255.0))); R=(string)temp; G="0"; B="255"; return(StringToColor("C'"+R+","+G+","+B+"'")); } return(StringToColor("C'"+(string)255+","+(string)255+","+(string)255+"'")); } //+------------------------------------------------------------------+ double ScaleColor(double In,double InMIN,double InMAX,double OutMIN,double OutMAX) { double Out=((In-InMIN)*(OutMAX-OutMIN)/(InMAX-InMIN))+OutMIN; return(Out); } //+------------------------------------------------------------------+
이 함수는 무지개 색 눈금에 따라 색을 반환합니다.
이 함수를 라이브러리에 추가할 수 있을까요? - 속도 측면에서 개선할 수 있습니다.
joo:
여유 시간에 살펴보고 어떤 종류의 함수인지 파악한 후 필요한 경우 삽입하겠습니다. 하지만 일반적으로 HSL에서 HSL로 변환하는 기능이 있습니다. H 구성 요소는 색조(색상 번호)로, 0에서 1까지 무지개 전체를 통과합니다.
컬러 작업을 위한 멋진 기능 세트! 감사합니다.
그러나 완전한 행복을 위해 주어진 간격에있는 숫자를 색상으로 변환하는 기능이 부족합니다 (함수의 도움으로 원하는대로 색상을 변환 할 수 있습니다).
저는 그런 원시적인 구조를 사용합니다:
이 함수는 무지개 색 눈금에 따라 색을 반환합니다.
이 함수를 라이브러리에 추가할 수 있을까요? - 속도 측면에서 개선할 수 있습니다.
IncColors:
색상 작업을 위한 함수 집합이 있는 클래스입니다. 색상 좌표 변환 함수 및 기타 함수를 포함합니다.
Author: Dmitry Fedoseev