Galeria de UIs escritas em MQL - página 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 #:

Há um "erro" na última janela. Na verdade, a barra de progresso mostra 38%, mas diz 58%.

Na verdade, isso está correto porque o código diz isso:

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


....

E em outra linha:

__, VALUE, "V1",

diz: _,V_CURRENT, 58,

Daí a confusão. Eu estava desatento.

Quanto aos botões, simplesmente não consegui encontrar as imagens anteriores. Havia uma cruz especial e um ícone de pausa. Tentarei encontrar e corrigir isso.
 

Peter, você tem um problema com as bordas dos ícones. Isso é muito incômodo.


Isso ocorre porque você não mistura a cor que usa o canal alfa com o plano de fundo. Aqui está a função necessária para misturar duas cores que usam o canal 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;
}

Você também pode ver como trabalhar com pnghttps://www.mql5.com/en/code/45439
 
Nikolai Semko #:

Peter, você tem um problema com as bordas dos ícones.
É muito difícil para os olhos.


Isso ocorre porque você não mistura a cor que usa o canal alfa com o plano de fundo. Aqui está a função necessária para misturar cores que usam o canal alfa.


Você também pode ver como trabalhar com pnghttps://www.mql5.com/en/code/45439
Olá, Nikolai!

Não há nenhum problema, pois é assim que os ícones são. Observe que os ícones 16×16 são bons (muito menos incômodos para os olhos). Somente os ícones 32×32 têm esse defeito. O motivo é a fonte de onde eu os baixei. :)

Você só precisa "roubar" rótulos de melhor qualidade. Lol.

Bem, em geral, você está certo. É melhor trabalhar com cores.

 
Реter Konow #:
Olá, Nikolai!

Não há nenhum problema, pois é assim que os ícones são. Observe que os ícones 16×16 não apresentam problemas. Somente os ícones de 32×32 têm esse defeito. O motivo está na fonte de onde eu os baixei. :)

Você só precisa "roubar" rótulos de melhor qualidade. Lol.

Há muitas fontes agora com ícones png normais com fundos transparentes.


Por exemplo:https://pngtree.com/so/colored-icons

Veja por si mesmo, é claro, mas sua GUI terá uma qualidade muito maior sem esses artefatos de borda.

 
Nikolai Semko #:


Há muitas fontes com ícones png normais com fundo transparente. Veja por si mesmo, é claro, mas sua GUI ficará muito melhor sem essa pixelização nas bordas.

Não estou discutindo... É claro que ficaria melhor. A propósito, eu lido muito bem com os ícones. Preste atenção à sombra deles nos botões da barra de tarefas. Deixo o plano de fundo transparente. Mas há "lixo" de cor nos pixels, o que é difícil de identificar programaticamente. Como essas manchas nas bordas. Elas não são estritamente de uma cor e é difícil separá-las do próprio ícone para removê-las. Esse é o problema.

Precisamos de ícones melhores. Sem "lixo" pixelizado.
 
Nikolai Semko #:

Agora há muitas fontes com ícones png normais com fundo transparente.


Por exemplo:https://pngtree.com/so/colored-icons

Vou dar uma olhada quando quiser. Senx!
 
Реter Konow #:
Não estou discutindo. É claro que ficaria melhor. A propósito, faço um bom trabalho com os ícones. Observe a sombra deles nos botões da barra de tarefas. Deixo o plano de fundo transparente. Mas há "lixo" de cor nos pixels, o que é difícil de identificar programaticamente. Como essas manchas nas bordas. Elas não são estritamente de uma cor e é difícil separá-las do próprio ícone para removê-las. Esse é o problema.

Só precisamos de ícones melhores. Sem o "lixo" pixelado.

Não há lixoem um pngnormal com fundo transparente. O lixo aparece quando o processamento está errado. A função correta foi fornecida acima.

Eu costumava fazer o mesmo com as sombras. Agora não faço mais isso.
Moda moderna sem sombras, gradientes e cachos.
Resumindo, minimalismo, que é a favor do desempenho de renderização.

 
Nikolai Semko #:

Em um pngnormal com fundo transparente, não há lixo. O lixo aparece no processamento incorreto. A função correta foi fornecida acima.

...

Tudo é assim, se você não baixar ícones "pirateados", como eu fazia há muitos anos. ))) Então não há muito o que processar, pois o plano de fundo está marcado com -1.

Nesse caso, meu algoritmo insere a cor subjacente da superfície do pixel sob o ícone. Nem mesmo a transparência precisa ser "ajustada".

Mas se, em vez de -1, o pixel tiver alguma outra cor, não será realista separá-lo do restante, e as funções de transparência não ajudarão. Esse é o ponto.