MQL로 작성된 UI 갤러리 - 페이지 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 #:

마지막 창에 '오류'가 있습니다. 진행률 표시줄에 실제로는 38%로 표시되지만 58%로 표시됩니다.

코드에 그렇게 나와 있기 때문에 실제로는 맞습니다:

__, p_bar, "p1", v_current, 38,


....

그리고 다른 줄에서는

__, value, "v1",

라고 표시됩니다: _,v_current, 58,

그래서 혼란스러웠습니다. 제가 부주의했습니다.

버튼에 관해서는 이전 사진을 찾을 수 없었습니다. 특별한 십자가와 일시 정지 아이콘이 있었습니다. 찾아서 고치도록 노력하겠습니다.
 

Peter, 아이콘의 가장자리에 문제가 있습니다. 매우 거슬리는데요.


알파 채널을 사용하는 색상을 배경과 혼합하지 않았기 때문입니다. 알파 채널을 사용하는 두 가지 색상을 혼합하는 데 필요한 함수는 다음과 같습니다.

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로 작업하는 방법을 볼 수도 있습니다https://www.mql5.com/en/code/45439
 
Nikolai Semko #:

피터, 아이콘 가장자리에 문제가 있어요.
눈이 매우 힘들어요.


알파 채널을 사용하는 색상을 배경과 혼합하지 않았기 때문입니다. 알파 채널을 사용하는 색상을 혼합하는 데 필요한 함수는 다음과 같습니다.


PNG로 작업하는 방법을 볼 수도 있습니다https://www.mql5.com/en/code/45439
안녕하세요 니콜라이!

아이콘이 그런 방식이기 때문에 문제가 없습니다. 16×16 아이콘도 괜찮습니다(눈에 훨씬 덜 거슬리지 않음). 32×32 아이콘에만 이 결함이 있습니다. 그 이유는 제가 다운로드한 소스 때문입니다. :)

더 좋은 품질의 라벨을 "훔쳐야" 합니다. Lol.

일반적으로 당신이 맞습니다. 컬러로 작업하는 것이 더 낫습니다.

 
Реter Konow #:
안녕하세요, 니콜라이!

아이콘이 그렇게 되어 있기 때문에 문제 없습니다. 16×16 아이콘은 괜찮습니다. 32×32 아이콘에만 이 결함이 있습니다. 그 이유는 제가 다운로드한 소스에 있습니다. :)

더 좋은 품질의 라벨을 "훔쳐야" 합니다. Lol.

현재 투명한 배경의 일반 png 아이콘을 사용하는 소스가 많이 있습니다.


예:https://pngtree.com/so/colored-icons

물론 직접 보시면 아시겠지만, 가장자리 인공물이 없는 GUI는 훨씬 더 높은 품질로 보일 것입니다.

 
Nikolai Semko #:


배경이 투명한 일반 PNG 아이콘을 사용하는 소스가 많이 있습니다. 물론 직접 확인해보면 가장자리의 픽셀화가 없어도 GUI가 훨씬 더 좋아 보일 것입니다.

나는 논쟁하는 것이 아닙니다... 물론 더 좋아 보이겠죠. 그건 그렇고, 저는 아이콘을 꽤 잘 다룹니다. 작업 표시 줄 버튼의 그림자에주의를 기울이십시오. 배경을 투명하게 만듭니다. 그러나 픽셀에는 프로그래밍 방식으로 식별하기 어려운 색상 "쓰레기"가 있습니다. 가장자리에 있는 이 반점들처럼요. 엄밀히 말하면 한 가지 색이 아니며 아이콘 자체에서 분리하여 제거하기가 어렵습니다. 이것이 문제입니다.

더 나은 아이콘이 필요합니다. 픽셀화된 '쓰레기' 없이요.
 
Nikolai Semko #:

이제 배경이 투명한 일반 PNG 아이콘이 있는 소스가 많이 있습니다.


예:https://pngtree.com/so/colored-icons

여유롭게 살펴볼게요. 센스!
 
Реter Konow #:
논쟁하는 게 아닙니다. 물론 더 좋아 보일 것입니다. 그건 그렇고, 저는 아이콘을 꽤 잘 처리합니다. 작업 표시 줄 버튼의 그림자를 주목하세요. 배경을 투명하게 만듭니다. 그러나 픽셀에는 프로그래밍 방식으로 식별하기 어려운 색상 "쓰레기"가 있습니다. 가장자리에 있는 이 반점들처럼요. 엄밀히 말하면 한 가지 색이 아니며 아이콘 자체에서 분리하여 제거하기가 어렵습니다. 이것이 바로 문제입니다.

더 나은 아이콘이 필요합니다. 픽셀화된 "쓰레기" 없이 말이죠.

투명한 배경의일반 PNG에는 쓰레기가 없습니다. 처리가 잘못되었을 때 쓰레기가 나타납니다. 올바른 기능은 위에 설명되어 있습니다 .

저는 그림자도 똑같이 처리하곤 했습니다. 이제는 더 이상 그렇게 하지 않습니다.
그림자, 그라데이션 및 컬이없는 현대적인 패션.
한마디로 미니멀리즘으로 렌더링 성능에 유리합니다.

 
Nikolai Semko #:

투명한 배경의일반 PNG에는 쓰레기가 없습니다. 잘못된 처리 시 쓰레기가 나타납니다. 올바른 함수는 위에 나와 있습니다 .

...

내가 수년 전에했던 것처럼 아이콘을 "불법 복제"하지 않으면 모든 것이 그와 같습니다. ))) 그런 다음 배경이 -1로 표시되어 있기 때문에 처리 할 것이 많지 않습니다.

이 경우 제 알고리즘은 픽셀 표면의 기본 색상을 아이콘 아래에 삽입합니다. 투명도도 "조정"할 필요가 없습니다.

그러나 픽셀에 -1 대신 다른 색이 있는 경우 픽셀을 나머지 색과 구분하는 것은 비현실적이며 투명도 함수는 도움이 되지 않습니다. 이것이 바로 요점입니다.