エラー、バグ、質問 - ページ 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のインジケータが動作しません。

私のインジケーターを付けてください。ドルフリーで落ちません。

 

こんにちは。

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辺にアウトラインが表示される問題

実際、CCanvasは非常に生々しいです。そこには、特にアンチエイリアスに関する多くのバグが存在します。アルゴリズムが狂っているだけです。
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;
  }

を使えばこの問題は解消されますが、平滑化アルゴリズムそのものが解決するわけではありません。


アンチエイリアスはこれでいいのか?
そして、適切なアンチエイリアスの例です(上の線は適切なアンチエイリアス、下の線はアンチエイリアス付きのLineThickですが、アンチエイリアスとは言い難いです)