Galerie d'interfaces utilisateur écrites en MQL - page 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 #:

Il y a une "erreur" dans la dernière fenêtre. La barre de progression indique en fait 38%, mais il est écrit 58%.

C'est en fait correct parce que le code le dit :

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


....

Et dans une autre ligne :

__, VALUE, "V1",

il est écrit : _,V_CURRENT, 58,

D'où la confusion. J'étais inattentif.

Quant aux boutons, je n'ai pas retrouvé les images précédentes. Il y avait une croix spéciale et une icône de pause. Je vais essayer de les retrouver et de les réparer.
 

Peter, vous avez un problème avec les bords des icônes. C'est très dérangeant.


C'est parce que vous ne mélangez pas la couleur qui utilise le canal alpha avec l'arrière-plan. Voici la fonction nécessaire pour mélanger deux couleurs qui utilisent le canal alpha.

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;
}

vous pouvez aussi voir comment travailler avec le pnghttps://www.mql5.com/en/code/45439
 
Nikolai Semko #:

Peter, vous avez un problème avec les bords des icônes.
C'est très dur pour l'œil.


C'est parce que vous ne mélangez pas la couleur qui utilise le canal alpha avec l'arrière-plan. Voici la fonction nécessaire pour mélanger les couleurs qui utilisent le canal alpha.


Vous pouvez aussi voir comment travailler avec pnghttps://www.mql5.com/en/code/45439
Bonjour Nikolaï !

Il n'y a pas de problème, car c'est ainsi que les icônes sont conçues. Notez que les icônes 16×16 sont parfaites (beaucoup moins gênantes pour l'œil). Seules les icônes 32×32 ont ce défaut. La raison est la source à partir de laquelle je les ai téléchargées. :)

Il suffit de "voler" des étiquettes de meilleure qualité. Lol.

En général, vous avez raison. Il est préférable de travailler avec la couleur.

 
Реter Konow #:
Bonjour, Nikolaï !

Il n'y a pas de problème, car c'est ainsi que les icônes sont conçues. Notez que les icônes 16×16 sont parfaites. Seules les icônes 32×32 ont ce défaut. La raison se trouve dans la source à partir de laquelle je les ai téléchargées. :)

Il suffit de "voler" des étiquettes de meilleure qualité. Lol.

il existe de nombreuses sources qui proposent des icônes normales en png avec des arrière-plans transparents.


Par exemple: https://pngtree.com/so/colored-icons

Voyez par vous-même, bien sûr, mais votre interface graphique sera de bien meilleure qualité sans ces artefacts.

 
Nikolai Semko #:


il existe de nombreuses sources avec des icônes en png normales avec un fond transparent. Voyez par vous-même, bien sûr, mais votre interface graphique sera bien plus agréable à regarder sans cette pixellisation sur les bords.

Je ne discute pas... Bien sûr que c'est mieux. Au fait, je m'occupe assez bien des icônes. Faites attention à leur ombre sur les boutons de la barre des tâches. Je rends l'arrière-plan transparent. Mais il y a des "déchets" de couleur dans les pixels, qui sont difficiles à identifier par programmation. C'est le cas de ces taches sur les bords. Elles ne sont pas strictement d'une seule couleur et il est difficile de les séparer de l'icône elle-même pour les supprimer. Voilà le problème.

Nous avons besoin de meilleures icônes. Sans "déchets" pixellisés.
 
Nikolai Semko #:

Il existe aujourd'hui de nombreuses sources proposant des icônes normales en png avec un arrière-plan transparent.


Par exemple: https://pngtree.com/so/colored-icons

J'y jetterai un coup d'œil quand j'en aurai le temps. Senx !
 
Реter Konow #:
Je ne dis pas le contraire. Bien sûr que ce serait mieux. D'ailleurs, je fais un assez bon travail sur les icônes. Remarquez leur ombre sur les boutons de la barre des tâches. J'ai rendu l'arrière-plan transparent. Mais il y a des "déchets" de couleur dans les pixels, qui sont difficiles à identifier par programmation. C'est le cas de ces taches sur les bords. Elles ne sont pas strictement d'une seule couleur et il est difficile de les séparer de l'icône elle-même pour les supprimer. C'est là le problème.

Nous avons simplement besoin de meilleures icônes. Sans ces "déchets" pixellisés.

Il n'y a pas de déchetsdans un pngnormal avec un fond transparent. Les déchets apparaissent lorsque le traitement est incorrect. La fonction correcte a été donnée plus haut.

J'avais l'habitude de faire la même chose avec les ombres. Maintenant, je ne le fais plus.
La mode moderne sans ombres, dégradés et boucles.
Le minimalisme en somme, qui favorise les performances de rendu.

 
Nikolai Semko #:

dans un pngnormal avec un fond transparent, il n'y a pas de déchets. Les déchets apparaissent lors d'un traitement incorrect. La fonction correcte a été donnée ci-dessus.

...

Tout est comme ça, si vous ne téléchargez pas d'icônes de manière "pirate", comme je l'ai fait il y a de nombreuses années. ))) Dans ce cas, il n'y a pas grand-chose à traiter, car l'arrière-plan est marqué par -1.

Dans ce cas, mon algorithme insère la couleur sous-jacente de la surface du pixel sous l'icône. Même la transparence n'a pas besoin d'être modifiée.

Mais si, au lieu de -1, le pixel a une autre couleur, il n'est pas réaliste de le séparer du reste, et les fonctions de transparence ne seront d'aucune aide. C'est là tout l'intérêt.