Kütüphaneler: IncColors

 

IncColors:

Renklerle çalışmak için bir dizi işlev içeren bir sınıf. Renk koordinatı dönüştürme fonksiyonları ve diğer fonksiyonlar.

Author: Dmitry Fedoseev

 

Renklerle çalışmak için harika özellikler! Teşekkür ederim.

Ancak, tam mutluluk için, belirli bir aralıkta yer alan bir sayıyı renge dönüştürme işlevinden yoksunum (ve renk, işlevlerinizin yardımıyla istediğiniz gibi dönüştürülebilir).

Böyle ilkel bir yapı kullanıyorum:

//+------------------------------------------------------------------+
//|JQS RainbowColour v1.0.0|
//|Telif Hakkı © 2010, JQS aka Joo. |
//|                                 http://www.mql4.com/ru/users/joo |
//| https://www.mql5.com/tr/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);
        //Eğer alt limitten küçükse
        if (Brush<0.0)
        {
                R="255";
                G="0";
                B="0";
                return(StringToColor("C'"+R+","+G+","+B+"'"));
        }
        //Eğer üst sınırdan büyükse
        if (Brush>100.0)
        {
                R="255";
                G="0";
                B="255";
                return(StringToColor("C'"+R+","+G+","+B+"'"));
        }
        //Kırmızıdan sarıya 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+"'"));
        }
        //--------------------------------------------
        //Sarıdan yeşile 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+"'"));
        }
        //--------------------------------------------
        //Yeşilden maviye 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+"'"));
        }
        //--------------------------------------------
        //Camgöbeğinden maviye 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+"'"));
        }
        //--------------------------------------------
        //Maviden menekşeye 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);
}
//+------------------------------------------------------------------+

Fonksiyon gökkuşağı renk skalasına göre renk döndürüyor.

Bu fonksiyonu kütüphaneye ekleyebilir misiniz? - ve hız açısından geliştirin.

 
joo:

Renklerle çalışmak için harika özellikler! Teşekkür ederim.

Ancak, tam mutluluk için, belirli bir aralıkta yer alan bir sayıyı renge dönüştürme işlevinden yoksunum (ve renk, işlevlerinizin yardımıyla istediğiniz gibi dönüştürülebilir).

Böyle ilkel bir yapı kullanıyorum:

Fonksiyon gökkuşağı renk skalasına göre renk döndürüyor.

Bu fonksiyonu kütüphaneye ekleyebilir misiniz? - ve hız açısından geliştirin.

Boş bir zamanımda bir göz atacağım, ne tür bir fonksiyon olduğunu anlayacağım ve gerekirse ekleyeceğim. Ancak genel olarak, HSL'den HSL'ye bir dönüşüm var. H bileşeni renk tonu (renk numarası), sadece 0'dan 1'e kadar tüm gökkuşağından geçiyoruz.