오류, 버그, 질문 - 페이지 2552

 

안녕하세요!

오늘 MT5는 2124로, MT4는 1198로 업데이트되었습니다.

마우스 휠로 위아래로 스크롤하면 두 편집기에서 작동이 중지되었습니다. 다른 프로그램에서는 모든 것이 잘 작동합니다. 바퀴가 작동하거나 작동하지 않는 사람을 작성하십시오.

 
Alexey Volchanskiy :

안녕하세요!

오늘 MT5는 2124로, MT4는 1198로 업데이트되었습니다.

마우스 휠로 위아래로 스크롤하면 두 편집기에서 작동이 중지되었습니다. 다른 프로그램에서는 모든 것이 잘 작동합니다. 바퀴가 작동하거나 작동하지 않는 사람을 작성하십시오.

그들은 일한다. 두 편집기의 두 바퀴.

 
MT5에서 - 작동
 
Andy :
MT5에서 - 작동

알겠습니다. 두 분 모두에게 감사드립니다. 이것은 내 10 업데이트이므로 다시 MS는 MTX와 어울리지 않습니다.

 
여보세요. fxssi의 지표가 되지 마십시오. 누구에게 연락할 수 있는지 알려주세요(개발자)?
파일:
expert.jpg  625 kb
 
A123272 :
여보세요. 표시등이 꺼지지 않습니다. 누구에게 연락할 수 있는지 알려주세요(개발자)?
누구에게 의지해야하는지 이해가됩니다.
 
A123272 :
여보세요. fxssi의 지표가 되지 마십시오. 누구에게 연락할 수 있는지 알려주세요(개발자)?

하단에 예외가 있고 프로그램이 중단됩니다. 그들은 전에 일했습니까?

 
A123272 :
여보세요. fxssi의 지표가 되지 마십시오. 누구에게 연락할 수 있는지 알려주세요(개발자)?

내 지표를 넣어. 그들은 dll 없이 떨어지지 않습니다.

 

안녕하세요!

LineThick 캔버스에서 그리기 문제, 3픽셀 이상에서 크기를 설정할 때 윤곽선이 3면에 나타남

 #include <Canvas\Canvas.mqh>
CCanvas can;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   can.CreateBitmapLabel( 0 , 0 , "Canvas" , 0 , 0 ,( int ) ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS ),( int ) ChartGetInteger ( 0 , CHART_HEIGHT_IN_PIXELS ), COLOR_FORMAT_ARGB_NORMALIZE );
   can.Erase();
   can.FillRectangle ( 500 , 100 , 1000 , 150 , ColorToARGB ( clrDarkGray , 50 ));
   can.FillRectangle ( 600 , 30 , 650 , 500 , ColorToARGB ( clrDarkGray , 50 ));
   can.LineThickVertical( 500 , 50 , 300 , ColorToARGB ( clrDarkGray , 50 ), 6 , 1 ,LINE_END_ROUND);
   can.LineThickVertical( 530 , 50 , 300 , ColorToARGB ( clrDarkGray , 50 ), 6 , 1 ,LINE_END_ROUND);
   can.LineThickVertical( 560 , 50 , 300 , ColorToARGB ( clrDarkGray , 50 ), 6 , 1 ,LINE_END_ROUND);
   can.LineThickHorizontal( 0 , 1000 , 150 , ColorToARGB ( clrDarkGray , 50 ), 6 , 1 ,LINE_END_ROUND);
   can.LineThickHorizontal( 0 , 1000 , 170 , ColorToARGB ( clrDarkGray , 50 ), 6 , 1 ,LINE_END_ROUND);
   can.LineThickHorizontal( 0 , 1000 , 190 , ColorToARGB ( clrDarkGray , 50 ), 6 , 1 ,LINE_END_ROUND);
   can.LineThick( 0 , 100 , 1000 , 410 , ColorToARGB ( clrDarkGray ), 5 , 1 ,LINE_END_ROUND);
   can.Update();
   DebugBreak ();
  }


 
Rafil Nurmukhametov :

안녕하세요!

LineThick 캔버스에서 그리기 문제, 3픽셀 이상에서 크기를 설정할 때 윤곽선이 3면에 나타남

사실 CCCanvas는 매우 조잡합니다. 특히 앤티 앨리어싱과 관련하여 많은 잼이 있습니다. 알고리즘은 당신의 눈을 찔러버릴 뿐입니다.
CCanvas 함수의 기본 PixelTransform을 다음으로 교체합니다.

 void CCanvas::PixelTransform ( const int x, const int y, const uint clr, const double alpha)
  {
   union argb { uint clr; uchar c[ 4 ]; };
   int addr=y*m_width+x;
   uint clrback=m_pixels[addr];
   if (clrback== 0 )
     {
      m_pixels[addr]=TRGB( uchar (alpha* 255.0 + 0.49999 ),clr& 0x00FFFFFF );
       return ;
     }
   if (alpha< 1.0 / 510 )
       return ;
   if (alpha>( 1 - 1.0 / 510 ))
      m_pixels[addr]=clr| 0xFF000000 ;
   argb C,Bg;

   C.clr=clr;
   C.c[ 3 ]= uchar (alpha* 255.0 + 0.49999 );

   Bg.clr=clrback;
   double alphab=Bg.c[ 3 ]/ 255.0 ;

   C.c[ 2 ]= uchar (Bg.c[ 2 ]+alpha*(C.c[ 2 ]-Bg.c[ 2 ]));
   C.c[ 1 ]= uchar (Bg.c[ 1 ]+alpha*(C.c[ 1 ]-Bg.c[ 1 ]));
   C.c[ 0 ]= uchar (Bg.c[ 0 ]+alpha*(C.c[ 0 ]-Bg.c[ 0 ]));

   C.c[ 3 ]= uchar ((alphab+alpha-alphab*alpha)* 255 + 0.49999 );
   m_pixels[addr]=C.clr;
  }

이 문제는 사라지지만 평활 알고리즘 자체가 문제를 해결하지 못합니다.


글쎄, 이것이 올바른 평활화입니까?
그리고 여기에 올바른 앤티앨리어싱의 예가 있습니다.