Una splendida serie di funzioni per lavorare con il colore! Grazie.
Ma, per essere completamente felice, mi manca la funzione di conversione di un numero compreso in un dato intervallo in colore (e il colore può essere convertito a piacere con l'aiuto delle vostre funzioni).
Uso una costruzione primitiva:
//+------------------------------------------------------------------+ //|JQS RainbowColour v1.0.0| //|Copyright © 2010, JQS aka Joo. | //| http://www.mql4.com/ru/users/joo | //| https://www.mql5.com/it/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); //Se inferiore al limite inferiore if (Brush<0.0) { R="255"; G="0"; B="0"; return(StringToColor("C'"+R+","+G+","+B+"'")); } //Se maggiore del limite superiore if (Brush>100.0) { R="255"; G="0"; B="255"; return(StringToColor("C'"+R+","+G+","+B+"'")); } //Dal rosso al giallo 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+"'")); } //-------------------------------------------- //Dal giallo al verde 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+"'")); } //-------------------------------------------- /Verde a blu 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+"'")); } //-------------------------------------------- //Dal ciano al blu 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+"'")); } //-------------------------------------------- //Dal blu al viola 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); } //+------------------------------------------------------------------+
La funzione restituisce il colore secondo la scala cromatica dell'arcobaleno.
Potreste aggiungere questa funzione alla libreria? - e migliorarla in termini di velocità.
Una serie di funzioni meravigliose per lavorare con il colore! Grazie.
Ma, per essere completamente felice, mi manca la funzione di conversione di un numero compreso in un dato intervallo in colore (e il colore può essere convertito a piacere con l'aiuto delle vostre funzioni).
Uso una costruzione primitiva:
La funzione restituisce il colore secondo la scala cromatica dell'arcobaleno.
Potreste aggiungere questa funzione alla libreria? - e migliorarla in termini di velocità.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
IncColori:
Una classe con una serie di funzioni per lavorare con il colore. Funzioni di conversione delle coordinate cromatiche e altre funzioni.
Author: Dmitry Fedoseev