라이브러리: IncColors

 

IncColors:

색상 작업을 위한 함수 집합이 있는 클래스입니다. 색상 좌표 변환 함수 및 기타 함수를 포함합니다.

Author: Dmitry Fedoseev

 

컬러 작업을 위한 멋진 기능 세트! 감사합니다.

그러나 완전한 행복을 위해 주어진 간격에있는 숫자를 색상으로 변환하는 기능이 부족합니다 (함수의 도움으로 원하는대로 색상을 변환 할 수 있습니다).

저는 그런 원시적인 구조를 사용합니다:

//+------------------------------------------------------------------+
//|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까지 무지개 전체를 통과합니다.