記事「DoEasy - コントロール(第32部):水平スクロールバー、マウスホイールスクロール」についてのディスカッション

 

新しい記事「DoEasy - コントロール(第32部):水平スクロールバー、マウスホイールスクロール」はパブリッシュされました:

この記事では、水平スクロールバーオブジェクト機能の開発を完成します。また、スクロールバーのスライダーを動かしたり、マウスホイールを回転させたりしてコンテナの内容をスクロールできるようにするほか、MQL5の新しい注文実行ポリシーや新しいランタイムエラーコードを考慮したライブラリへの追加もおこないます。

テストをおこなうために、前回の記事のEAをそのまま使用します。これをコンパイルして、コンテナの自動サイズ変更を「No」に設定してチャート上で実行してみましょう。



作成した水平スクロールバー機能のすべてのコンポーネントの動作を確認してみましょう。


すべてが計画通りに動いています。

作者: Artyom Trishkin

 
アルテム、ライブラリーはどうなんだ?もっと掘り下げる必要があると思う。例えばアナトリーは、よく知られた理由のために、彼のライブラリーを公にサポートすることをやめてしまった((
 
Denis Kirichenko #:
アルテム、ライブラリーはどうなんだ?もっと掘り下げる必要があると思う。例えばアナトリーは、よく知られた理由のために、彼のライブラリーを公にサポートすることを止めてしまった((

ええ、もちろんそうなるでしょう。公開はお休みです。目には非常に不快な視覚的バグがあります - トリミングされた領域が時々ちらつきながら描画されます。グラフの不必要な早すぎる再描画がどこかにある。その箇所はまだ見つかっていない。多くの相互関係があり、あるものは治し、別のものは不具にする......。

それを見つけたら、修正して続けるつもりだ。

 
Artyom Trishkin #:

ええ、もちろんそうなりますよ。投稿を休みました。目には非常に不快な視覚的バグがある-切り取られた部分が時々ちらつきながら描画される。グラフが不必要に早く再描画されるのだ。その箇所はまだ見つかっていない。相互関係がたくさんあって、あるものを治すと、別のものが不自由になる...。

それを見つけたら、修正して続けるつもりだ。

私もこの問題に直面し、この方法で解決した:

class CCanvas_my:public CCanvas
  {
public:
   bool              Resize(const int width,const int height);
  };

bool CCanvas_my::Resize(const int width,const int height)
  {
   if(m_rcname!=NULL && width>0 && height>0)
      if(ArrayResize(m_pixels,width*height)>0)
        {
         m_width =width;
         m_height=height;
        }
   return true;
  }

キャンバスのサイズを変更する標準機能を置き換える。コードに問題がなければ、不必要な再描画はない。

私のグラフィック・インターフェースはこのようなレベルで、10個のCCanvasオブジェクト(継承者)が使われている:


 
Aliaksandr Hryshyn #:

この問題にも遭遇したが、この方法で解決した:

カンヴァスのサイズを変更する標準機能を置き換える。コードに問題がなければ、不要な再描画は発生しません。

私はこのようなレベルのグラフィック・インターフェースを持っていて、10個のCCanvasオブジェクト(継承者)を使っている:


ありがとうございます。私の問題はリサイズではありません。私のメソッドのバグです。