Galleria di interfacce utente scritte in MQL - pagina 47

 

//------------------------------------------------------ 
//DECLARE A NEW WINDOW
//------------------------------------------------------ 
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/             W_TYPE, DIALOG,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/         W_NAME, "Incorrect settings", 
//------------------------------------------------------
/*SET WINDOW'S CAPTION*/        CAPTION, "Error", 
//------------------------------------------------------
/*NAME (CAPTION)IN THE MIDDLE*/ NIM,  
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/      W_ICON, "::Images\\16x16\\No.bmp",   
//------------------------------------------------------
/*ONLY CLOSING BUTTON*/         ONLY_CLOSING, 
//------------------------------------------------------
/*WINDOW ALWAYS ON TOP*/        ALWAYS_ON_TOP, 
//------------------------------------------------------
/*OPEN WINDOW WITH A SOUND*/    OPENING_SOUND,"::Sounds\\Windows Foreground.wav", 
//------------------------------------------------------ 
/*WINDOW OPENS AT START*/       //OPEN_ON_INIT,  /*(OOI)*/
//------------------------------------------------------
/*LOCK WINDOWS IF OPENED*/      LOCKS_WINDOWS, ALL_WINDOWS,   
//------------------------------------------------------
/*MARGINS OF THE WINDOW*/       MARGINS, 20,20,/*Х, Y*/
//------------------------------------------------------
  
//------------------------------------------------------ 
GROUP, A,
//-----------------------------------------------
__, T_BOX,  "T1",TEXT,
                 "INCORRECT VALUES!",
                 END, 
//-----------------------------------------------                
__, T_BOX,  "T2",TEXT,
                 "Please change settings.",
                 END,
//-----------------------------------------------                
END_GROUP,
//-----------------------------------------------
i, AT, _X2X, "MF",   1, _Y2Y, "MF", 1,
//-----------------------------------------------
"T1", _A3_,0,
"T1", W,250,
"T1", H,40,
//-----------------------------------------------
"T1", text,_C1_,55,
"T1", text,_C2_,10,
//-----------------------------------------------
"T1", text,N_COLOR,(int)clrWhite,
"T1", FONT_SIZE,10,
"T1", TEXT_FONT,"Arial Black",
//-----------------------------------------------
"T1", NG_LINES,20, 
"T1", NG_STEP,1,
"T1", H_GRADIENT,
"T1", N_COLOR,(int)C'255,1,1',
//-----------------------------------------------
"T2", _A3_,0,
"T2", W,250,
"T2", H,20,
//-----------------------------------------------
"T2", text,_C1_,65,
"T2", text,_C2_,3,
//-----------------------------------------------

//-----------------------------------------------
GROUP, A,
//----------------------------------------------- 
__, LABEL,A, N_LABEL,"::Images\\32x32\\Wrong.bmp", 
//----------------------------------------------- 
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 5,
//-----------------------------------------------

//----------------------------------------------- 
GROUP, A,
//----------------------------------------------- 
__,CHECKBOX, "More details", A_TEXT,"Fewer details",  
//----------------------------------------------- 
   GAP,95, 
//-----------------------------------------------    
   D_BUTTON, "Close", W,50,
                     //-----------------
                     _,CWIP,/*CLOSE WINDOW IF PRESSED*/
                     //-----------------
                     _,N_FRAME_COLOR,(int)C'51,153,255', 
                     //-----------------
                     BREAK_ROW_LINE,
//----------------------------------------------- 
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2H, "T2", 10,
//--------------------------
//-----------------------------------------------

END_WINDOW,
 

//------------------------------------------------------ 
//DECLARE A NEW WINDOW
//------------------------------------------------------ 
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/             W_TYPE, DIALOG,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/         W_NAME, "Processing the data...", 
//------------------------------------------------------
/*SET WINDOW'S CAPTION*/        CAPTION, "Please wait...", 
//------------------------------------------------------
/*NAME (CAPTION)IN THE MIDDLE*/ NIM,  
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/      W_ICON, "::Images\\16x16\\No.bmp",   
//------------------------------------------------------
/*ONLY CLOSING BUTTON*/         ONLY_CLOSING, 
//------------------------------------------------------
/*WINDOW ALWAYS ON TOP*/        ALWAYS_ON_TOP, 
//------------------------------------------------------
/*OPEN WINDOW WITH A SOUND*/  //OPENING_SOUND,"::Sounds\\Windows Foreground.wav",  
//------------------------------------------------------ 
/*WINDOW OPENS AT START*/     //OPEN_ON_INIT,   
//------------------------------------------------------
/*LOCK WINDOWS IF OPENED*/    //LOCKS_WINDOWS, ALL_WINDOWS,       
//------------------------------------------------------
/*MARGINS OF THE WINDOW*/       MARGINS, 10,10,/*Х, Y*/
//------------------------------------------------------
//----------------------------------------------------------------------------------
GROUP, A,

__, T_BOX,  "T1",TEXT,
//------------------------------------------------------
                 "Processing the data...",
//------------------------------------------------------
                 END, 
//------------------------------------------------------           
__, REC,    "T2", _A3_,0, _,W,450, _,H,70, _,N_COLOR,(int)C'255,255,255',
//------------------------------------------------------
                 
END_GROUP,
//--------------------------
i, AT, _X2X, "MF",   1, _Y2Y, "MF", 1,
//--------------
"T1",_A3_,0,
"T1", W,450,
"T1", H,40,
//--------------
"T1",text,_C1_,55,
"T1",text,_C2_,10,
"T1",text,N_COLOR,(int)C'255,255,255',
"T1",FONT_SIZE,10,
"T1",TEXT_FONT,"Arial Black",
//--------------
"T1",NG_LINES,75, 
"T1",NG_STEP,1,
"T1",H_GRADIENT,
"T1",N_COLOR,(int)C'255,155,155',
//--------------
//----------------------------------------------------------------------------------------------------
GROUP, A,
//------------------------------------------------------
__, LABEL,A, N_LABEL,  "::Images\\32x32\\Wait.bmp",   
//------------------------------------------------------
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 5,
//----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------------------------
GROUP, A,
//------------------------------------------------------
__, P_BAR,"P1",  W,400, 
//-------------------------------------------
               _,H,15, 
               //--------------------------- 
               _,V_CURRENT, 38,
               //--------------------------- 
               _,N_COLOR,(int)C'230,230,230', 
//------------------------------------------------------
END_GROUP,
//-----------------------------------
i, AT, _C2C, "T2", 0, _C2C, "T2", 10,
//----------------------------------------------------------------------------------

GROUP, A,
//----------------------------------------------------------------------------------
__, VALUE,"V1",  W,35, _,H,20, _,FONT_SIZE,12,_,N_COLOR,(int)clrWhite, _,UNITS__,"%",_,V_CURRENT, 58, 
//----------------------------------------------------------------------------------
    GAP,3,   
//----------------------------------------------------------------------------------    
    BOARD,"complete", FONT_SIZE,11, _,N_COLOR,(int)C'255,255,255',
//----------------------------------------------------------------------------------                                       
    GAP,220,   
//----------------------------------------------------------------------------------    
    I_BUTTON, "IB1",  
//----------------------------------------------------------------------------------    
    GAP,30,   
//----------------------------------------------------------------------------------    
    I_BUTTON,"IB2", 
//----------------------------------------------------------------------------------    
    BREAK_ROW_LINE,
//----------------------------------------------------------------------------------
END_GROUP,
//-----------------------------------
i, AT, _X2X, "P1", 0, _H2Y, "P1", -5,
//-----------------------------------
i,  I_BUTTONS,    W,17, 
                  //---------------------------
                  H,17, 
                  //---------------------------
                  N_COLOR,(int)clrWhite, 
                  //---------------------------
                  label,N_SHADOW,0, 
                  //---------------------------
                  label,P_SHADOW,0, 
                  //---------------------------
                  label,A_SHADOW,0, 
                  //---------------------------
                  label,A_MOVE,0, 
                  //---------------------------
                  END,
//----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
GROUP, A,

__,CHECKBOX, "More details", A_TEXT,"Fewer details", 
//-------------------------------------------
   GAP,95, 
//-------------------------------------------   
   D_BUTTON, "Cancel", CWIP,
                      //--------------------
                      _,N_FRAME_COLOR, (int)C'51,153,255', 
                      //--------------------
                      BREAK_ROW_LINE,
//------------------------------------------
END_GROUP,
//------------------------------------------
i, AT, _X2X, "MF", 10, _Y2H, "T2", 10,
//----------------------------------------------------------------------------------
END_WINDOW,
 
Реter Konow #:

C'è un "errore" nell'ultima finestra. La barra di avanzamento mostra effettivamente il 38%, ma dice 58%.

In realtà è corretto, perché il codice lo dice:

__, P_BAR, "P1", V_CURRENT, 38,


....

E in un'altra riga:

__, VALORE, "V1",

c'è scritto: _,V_CURRENT, 58,

Da qui la confusione. Sono stato disattento.

Per quanto riguarda i pulsanti, non sono riuscito a trovare le immagini precedenti. C'era una croce speciale e un'icona di pausa. Cercherò di trovarla e di sistemarla.
 

Peter, hai un problema con i bordi delle icone. È molto stridente.


Questo accade perché non si mescola il colore che utilizza il canale alfa con lo sfondo. Ecco la funzione necessaria per mescolare due colori che utilizzano il canale alfa.

void MixColor(uint clr, uint &addr) { // mix the color in the cell at addr with the color clr and enter the new value in the same cell
   if (GETRGBA(addr) == 0) {
      addr = clr;
      return;
   }
   union argb {
      uint clr;
      uchar c[4];
   } C;
   C.clr = clr;
   if (C.c[3] == 0) return;
   if (C.c[3] == 255) {
      addr = clr;
      return;
   }
   argb Bg;
   Bg.clr = addr;
   float a = C.c[3] / (float)255.0;
   float b = Bg.c[3]/ (float)255.0;
   float ab = b+a-b*a;
   C.c[3]=uchar(ab*255+0.49999);
   if (ab>0.002) {
      float a0 = a/ab;
      float a1 = b*(1-a)/ab;
      C.c[2] = uchar(C.c[2]*a0+Bg.c[2]*a1);
      C.c[1] = uchar(C.c[1]*a0+Bg.c[1]*a1);
      C.c[0] = uchar(C.c[0]*a0+Bg.c[0]*a1);
   }
   addr = C.clr;
}

si può anche vedere come lavorare con i pnghttps://www.mql5.com/en/code/45439
 
Nikolai Semko #:

Peter, hai un problema con i bordi delle icone.
È molto difficile per l'occhio.


Questo perché non si mescola il colore che utilizza il canale alfa con lo sfondo. Ecco la funzione necessaria per mescolare i colori che utilizzano il canale alfa.


puoi anche vedere come lavorare con i pnghttps://www.mql5.com/en/code/45439
Ciao Nikolai!

Non ci sono problemi, perché le icone sono fatte così. Nota, le icone 16×16 vanno bene (sono molto meno stridenti per l'occhio). Solo le icone 32×32 hanno questo difetto. Il motivo è la fonte da cui le ho scaricate. :)

Basta "rubare" etichette di qualità migliore. Lol.

In generale, hai ragione. È meglio lavorare con i colori.

 
Реter Konow #:
Ciao, Nikolai!

Non ci sono problemi, perché le icone sono così. Nota: le icone 16×16 vanno bene. Solo le icone 32×32 hanno questo difetto. Il motivo è nella fonte da cui le ho scaricate. :)

Basta "rubare" etichette di qualità migliore. Lol.

Ci sono molte fonti con normali icone png con sfondo trasparente.


Per esempio:https://pngtree.com/so/colored-icons

Naturalmente è possibile verificare da soli, ma la qualità dell'interfaccia grafica sarà molto più elevata senza quegli artefatti ai bordi.

 
Nikolai Semko #:


Ci sono molte fonti con icone png normali con sfondo trasparente. Naturalmente, verificate voi stessi, ma la vostra GUI avrà un aspetto migliore senza questa pixelatura sui bordi.

Non sto discutendo... Certo che l'aspetto sarebbe migliore. A proposito, io gestisco le icone abbastanza bene. Fate caso alla loro ombra sui pulsanti della barra delle applicazioni. Lo sfondo è trasparente. Ma c'è della "spazzatura" di colore nei pixel, che è difficile da identificare programmaticamente. Come queste macchie sui bordi. Non sono rigorosamente di un unico colore ed è difficile separarle dall'icona stessa per rimuoverle. Questo è il problema.

Abbiamo bisogno di icone migliori. Senza "spazzatura" pixelata.
 
Nikolai Semko #:

Ora ci sono molte fonti con normali icone png con sfondo trasparente.


Ad esempio:https://pngtree.com/so/colored-icons

Darò un'occhiata con calma. Senx!
 
Реter Konow #:
Non sto discutendo. Certo che avrebbe un aspetto migliore. A proposito, ho fatto un buon lavoro con le icone. Notate la loro ombra sui pulsanti della barra delle applicazioni. Lo sfondo è trasparente. Ma c'è della "spazzatura" di colore nei pixel, che è difficile da identificare programmaticamente. Come queste macchie sui bordi. Non sono rigorosamente di un unico colore ed è difficile separarle dall'icona stessa per rimuoverle. Questo è il problema.

Abbiamo bisogno di icone migliori. Senza la "spazzatura" pixelata.

Non c'è spazzaturain un normale png con sfondo trasparente. La spazzatura appare quando l'elaborazione è sbagliata. La funzione corretta è stata indicata sopra.

Ero solito fare lo stesso con le ombre. Ora non lo faccio più.
Moda moderna senza ombre, gradienti e riccioli.
In breve, il minimalismo, che è a favore delle prestazioni di rendering.

 
Nikolai Semko #:

In un pngnormale con sfondo trasparente non ci sono rifiuti. I rifiuti appaiono in caso di elaborazione non corretta. La funzione corretta è stata fornita sopra.

...

Tutto è così, se non si scaricano icone "piraticamente", come facevo io molti anni fa. ))) In questo caso non c'è molto da elaborare, perché lo sfondo è contrassegnato da -1.

In questo caso, il mio algoritmo inserisce il colore sottostante dalla superficie del pixel sotto l'icona. Anche la trasparenza non ha bisogno di essere "ritoccata".

Ma se al posto di -1 il pixel ha un altro colore, non è realistico separarlo dal resto e le funzioni di trasparenza non aiutano. Questo è il punto.