MQL ile yazılmış kullanıcı arayüzleri galerisi - sayfa 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 #:

Son pencerede bir "hata" var. İlerleme çubuğu aslında %38'i gösteriyor, ancak %58 yazıyor.

Bu aslında doğru çünkü kod öyle diyor:

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


....

Ve başka bir satırda:

__, DEĞER, "V1",

Diyor ki: _,V_CURRENT, 58,

Karışıklık bu yüzden. Dikkatsiz davrandım.

Düğmelere gelince, önceki resimleri bulamadım. Özel bir çarpı işareti ve bir duraklatma simgesi vardı. Bulup düzeltmeye çalışacağım.
 

Peter, simgelerin kenarlarıyla ilgili bir sorunun var. Çok sarsıcı.


Bunun nedeni alfa kanalını kullanan rengi arka planla karıştırmamanızdır. işte alfa kanalını kullanan iki rengi karıştırmak için gerekli fonksiyon.

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

png ile nasıl çalışılacağını da görebilirsinizhttps://www.mql5.com/en/code/45439
 
Nikolai Semko #:

Peter, simgelerin kenarlarıyla ilgili bir sorunun var.
Göze çok zor geliyor.


Bunun nedeni, alfa kanalını kullanan rengi arka planla karıştırmamanızdır. alfa kanalını kullanan renkleri karıştırmak için gerekli işlev burada.


png ile nasıl çalışılacağını da görebilirsinizhttps://www.mql5.com/en/code/45439
Merhaba Nikolai!

Sorun yok, çünkü simgeler bu şekilde. Not, 16×16 simgeler gayet iyi (göze çok daha az rahatsız edici). Sadece 32×32 simgelerde bu kusur var. Bunun nedeni onları indirdiğim kaynak. :)

Sadece daha kaliteli etiketleri "çalmanız" gerekiyor. Lol.

Genel olarak haklısın. Renkli çalışmak daha iyi.

 
Реter Konow #:
Merhaba, Nikolai!

Sorun yok, çünkü simgeler bu şekilde. Not, 16×16 simgelerde sorun yok. Sadece 32×32 simgelerde bu kusur var. Sebebi ise onları indirdiğim kaynakta. :)

Sadece daha kaliteli etiketleri "çalmanız" gerekiyor. Lol.

Şu anda şeffaf arka planlı normal png simgeleri olan birçok kaynak var.


Örneğin:https://pngtree.com/so/colored-icons

Elbette kendiniz görün, ancak GUI'niz bu kenar artefaktları olmadan çok daha kaliteli görünecektir.

 
Nikolai Semko #:


Şeffaf arka plana sahip normal png simgeleri olan birçok kaynak var. Elbette kendiniz görün, ancak GUI'niz kenarlardaki bu pikselleşme olmadan çok daha iyi görünecektir.

Tartışmıyorum... Elbette daha iyi görünecektir. Bu arada, simgeleri oldukça iyi idare ediyorum. Görev çubuğu düğmelerindeki gölgelerine dikkat edin. Arka planı şeffaf yapıyorum. Ancak piksellerde programatik olarak tanımlanması zor olan renk "çöpleri" var. Kenarlardaki bu benekler gibi. Bunlar kesinlikle tek renk değiller ve bunları kaldırmak için simgenin kendisinden ayırmak zor. İşte sorun bu.

Daha iyi ikonlara ihtiyacımız var. Pikselli "çöpler" olmadan.
 
Nikolai Semko #:

şimdi şeffaf arka plana sahip normal png simgeleri olan birçok kaynak var.


Örneğin:https://pngtree.com/so/colored-icons

Boş bir zamanımda bakacağım. Senx!
 
Реter Konow #:
Tartışmıyorum. Elbette daha iyi görünecektir. Bu arada, simgeler konusunda oldukça iyi bir iş çıkarmışım. Görev çubuğu düğmelerindeki gölgelere dikkat edin. Arka planı şeffaf yapıyorum. Ancak piksellerde programatik olarak tanımlanması zor olan renk "çöpleri" var. Kenarlardaki bu benekler gibi. Bunlar kesinlikle tek renk değiller ve bunları kaldırmak için simgenin kendisinden ayırmak zor. Sorun da bu.

Sadece daha iyi ikonlara ihtiyacımız var. Pikselli "çöpler" olmadan.

Şeffaf arka plana sahipnormal png'de çöp yoktur. İşleme yanlış olduğunda çöp görünür. Doğru fonksiyon yukarıda verilmişti.

Aynı şeyi gölgeler için de yapardım. Şimdi artık bunu yapmıyorum.
Gölgeler, gradyanlar ve bukleler olmadan modern moda.
Kısaca minimalizm, bu da render performansının lehine.

 
Nikolai Semko #:

şeffaf arka plana sahipnormal png'de çöp yoktur. Yanlış işlemde çöp görünür. Doğru fonksiyon yukarıda verilmiştir.

...

Eğer benim yıllar önce yaptığım gibi simgeleri "korsan" olarak indirmezseniz, her şey böyledir. ))) O zaman işlenecek fazla bir şey yoktur, çünkü arka plan -1 ile işaretlenmiştir.

Bu durumda, algoritmam piksel yüzeyindeki altta yatan rengi simgenin altına ekler. Şeffaflığın bile "ayarlanmasına" gerek yok.

Ancak piksel -1 yerine başka bir renge sahipse, onu diğerlerinden ayırmak gerçekçi değildir ve şeffaflık işlevleri yardımcı olmaz. Mesele de bu zaten.