Galería de interfaces de usuario escritas en 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 #:

Hay un "error" en la última ventana. La barra de progreso en realidad muestra 38%, pero dice 58%.

En realidad esto es correcto porque el código lo dice:

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


....

Y en otra línea:

__, VALOR, "V1",

dice: _,V_CURRENT, 58,

De ahí la confusión. Estaba desatento.

En cuanto a los botones, simplemente no pude encontrar las imágenes anteriores. Había una cruz especial, y un icono de pausa. Intentaré encontrarlo y arreglarlo.
 

Peter, tienes un problema con los bordes de los iconos. Es muy discordante.


Esto se debe a que no mezclas el color que utiliza el canal alfa con el fondo. aquí tienes la función necesaria para mezclar dos colores que utilizan el 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;
}

también puedes ver como trabajar con pnghttps://www.mql5.com/en/code/45439
 
Nikolai Semko #:

Peter, tienes un problema con los bordes de los iconos.
Es muy duro para el ojo.


Esto es porque no mezclas el color que usa el canal alfa con el fondo. aquí tienes la función necesaria para mezclar colores que usan el canal alfa.


también puedes ver como trabajar con pnghttps://www.mql5.com/en/code/45439
¡Hola Nikolai!

No hay ningún problema, porque así son los iconos. Fíjate, los iconos de 16×16 están bien (mucho menos chocantes a la vista). Sólo los iconos de 32×32 tienen este defecto. La razón es la fuente de donde los descargué. :)

Sólo hay que "robar" etiquetas de mejor calidad. Lol.

Bueno, en general, tienes razón. Es mejor trabajar con color.

 
Реter Konow #:
¡Hola, Nikolai!

No hay ningún problema, porque así son los iconos. Ten en cuenta que los iconos de 16×16 están bien. Sólo los iconos de 32×32 tienen este defecto. La razón está en la fuente de donde los descargué. :)

Sólo tienes que "robar" etiquetas de mejor calidad. Lol.

ahora hay muchas fuentes con iconos png normales con fondos transparentes.


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

Compruébelo usted mismo, por supuesto, pero su interfaz gráfica de usuario se verá mucho más calidad sin esos artefactos de borde.

 
Nikolai Semko #:


hay muchas fuentes con iconos png normales con fondo transparente. Compruébelo usted mismo, por supuesto, pero su interfaz gráfica de usuario se verá mucho mejor sin este pixelado en los bordes.

No estoy discutiendo... Por supuesto que se vería mejor. Por cierto, manejo los iconos bastante bien. Presta atención a su sombra en los botones de la barra de tareas. Hago el fondo transparente. Pero hay "basura" de color en los píxeles, que es difícil de identificar programáticamente. Como estas manchas en los bordes. No son estrictamente de un color y es difícil separarlas del propio icono para eliminarlas. Ése es el problema.

Necesitamos mejores iconos. Sin "basura" pixelada.
 
Nikolai Semko #:

ahora hay muchas fuentes con iconos png normales con fondo transparente.


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

Voy a echar un vistazo en mi tiempo libre. ¡Senx!
 
Реter Konow #:
No lo discuto. Por supuesto que quedaría mejor. Por cierto, hago un buen trabajo con los iconos. Fíjate en su sombra en los botones de la barra de tareas. Hago el fondo transparente. Pero hay "basura" de color en los píxeles, que es difícil de identificar programáticamente. Como estas manchas en los bordes. No son estrictamente de un color y es difícil separarlas del propio icono para eliminarlas. Ése es el problema.

Necesitamos iconos mejores. Sin la "basura" pixelada.

No hay basuraen un pngnormal con fondo transparente. La basura aparece cuando el procesamiento es incorrecto. La función correcta se dio anteriormente.

Yo solía hacer lo mismo con las sombras. Ahora ya no lo hago.
Moda moderna sin sombras, degradados y rizos.
Minimalismo en definitiva, lo que favorece el rendimiento del renderizado.

 
Nikolai Semko #:

en pngnormal con fondo transparente no hay basura. La basura aparece en el procesamiento incorrecto. La función correcta fue dada arriba.

...

Todo es así, si no descargas iconos "piraticamente", como hice yo hace muchos años. ))) Entonces no hay mucho que procesar, porque el fondo está marcado con -1.

En este caso, mi algoritmo inserta el color subyacente de la superficie del píxel bajo el icono. Incluso la transparencia no necesita ser "retocada".

Pero si en lugar de -1 el píxel tiene algún otro color, no es realista separarlo del resto, y las funciones de transparencia no ayudarán. Esa es la cuestión.