キャンバスがカッコいい! - ページ 14

 
Nikolai Semko:

だから、私のメッセージを聞いていないんですね。

しかし、座標を出すには二重の数字を四捨五入 する必要があります。他に方法はない。

 
Реter Konow:

しかし、座標を出すには二重の数字を四捨五入 する必要があります。それ以外の方法はない。

何も丸くしなくてもいいんです。

以下、例としてスクリプトを紹介します。

まず、デフォルトのパラメータで実行します(円は平滑化され、座標と寸法はdouble型です)。

を実行し、パラメータ typ = not_smoothed_circles (アンチエイリアスのかかった円、座標とサイズは int 型 - CCanvas クラスのもの) を指定して実行します。

をご覧いただければ、お分かりになると思います。

黒背景ではなく、白背景で行うのがよいでしょう

ファイル:
 
Nikolai Semko:

原作はDoom...

マウスでチャートをスクロールしているときに画像がフリーズしてしまうのはなぜだろう?


リソースを殺せないのが残念です。例えば、フレームインジケーターを消すとします。そして、リソースを持つオブジェクトはぶら下がったままです。オブジェクトは殺せるが、リソースは......ダメだ。結局、Terminalのメモリを全部食ってしまい、Expert Advisorを気づかないうちに使えなくするのは簡単なことなのです。

 

JavaScriptで書かれた3Dライブラリは、もう100年も前からたくさんあります。最も簡単で直接的な方法は、そこからここへと書き換えることです。

もちろん100年分ではなく、数年分です。

 
fxsaber:

マウスでチャートをスクロールしているときに画像がフリーズしてしまうのはなぜだろう?

iCanvas クラスの CHARTEVENT_CHART_CHANGE イベントコントロールが原因でしょう。

は、スクリプトにそのような制御がなく、フリーズすることはありません。

ファイル:
fire.mq5  9 kb
 
Nikolai Semko:

何も丸くしなくてもいいんです。

以下、例としてスクリプトを紹介します。

まず、デフォルトのパラメータ(アンチエイリアスのかかった円、座標と寸法がdouble型)で実行します。

を実行し、パラメータ typ = not_smoothed_circles (アンチエイリアスのかかった円、座標とサイズは int 型 - CCanvas クラスのもの) を指定して実行します。

をご覧いただければ、お分かりになると思います。

黒ではなく、白の背景で行うのがよいでしょう。

はい、とても良い感じです。円の品質形状。

しかし、あなたが使っているのはCCanvasクラスで、そこでは座標はint型に設定されています。

 
fxsaber:

マウスでチャートをスクロールしているときに画像がフリーズしてしまうのはなぜだろう。


資源を殺せないのが残念です。例えば、フレームインジケーターを消すとします。そして、リソースを持つオブジェクトはぶら下がったままです。オブジェクトは殺せるが、リソースは......ダメだ。端末のメモリを消費するため、Expert Advisorを目立たないように無効にすることができます。

また、ResourseFree()についてはどうでしょうか?

 
fxsaber:

リソースを殺せないのが残念。例えば、フレームインジケーターを消すとします。リソースを持つオブジェクトをぶら下げたままにしておくのです。オブジェクトを殺すことはできても、リソースを殺すことはできない。最終的には、ターミナル全体のメモリを食ってしまい、エキスパートアドバイザーを気づかないうちに無効にしてしまうこともあります。

でも、なぜ?

自分のクラスでデストラクタを使用している

~iCanvas() { Destroy(); ChartRedraw();};

と破壊する。

void CCanvas::Destroy(void)
  {
//--- delete object
   if(m_objname!=NULL)
     {
      ObjectDelete(m_chart_id,m_objname);
      m_chart_id=0;
      m_objname =NULL;
      m_objtype =WRONG_VALUE;
     }
//--- deallocate array
   ArrayFree(m_pixels);
//--- free resource
   if(m_rcname!=NULL)
     {
      ResourceFree(m_rcname);
      m_rcname=NULL;
     }
//--- zeroize data
   m_width =0;
   m_height=0;
  }
 
Nikolai Semko:

これは、おそらく iCanvas クラスで CHARTEVENT_CHART_CHANGE イベントを制御しているためです。

スクリプトでは、そのような制御はなく、フリーズすることはありません。

はい、スクリプトに問題はありません。


どのように見えるのか、とても気になります。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MetaTrader 5 build 1930の新バージョン:MQL5におけるフローティング・チャート・ウィンドウと.Netライブラリ

fxsaber, 2019.01.14 21:37

ガス栓を外した状態の思考の引き出し絵の作成が残されている。

しかし、本当に壮観なのは、バーやオブジェクトラインそのものに火をつけることです。


炉のスリットのように棒を作ることもできます。まるで、炎を透かして見ているようです。


これは少し手間がかかります。メインの炎のコピーとして2つ目のCanvasバッファを作成し、バーのピクセル位置に対してフィルタを適用しています。一見、難しくはないはずなのですが。

 
Nikolai Semko:

それはなぜでしょうか?

自分のクラスでデストラクタを使用している

と破壊する。

そうしたら、なぜか全部残っているので、うまくいきませんでした。

理由: