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

 
fxsaber:

CCanvasは、ResourceCreateのラッパーです。ですから、例えば、配列の形で20枚の画像が用意されているとします。キャンバスで変更する場合は、高価なArrayCopy+Updateを行う必要があります。

また、CCanvasを使わずに行う場合は、ResourceCreate+ChartRerdrawのみが必要です。kodobaseに動的描画の仕事をいくつか投稿しています。そこでは、CCanvasがダメなのは一目瞭然でした。

Resourceのラッピングというのは納得です。定義を決める必要がある。Canvas は、私の理解では、CCanvas クラスではなく、矩形のグラフィック・リソース、つまり点の配列です。CCanvas クラスに必要なのは、作成、更新、削除のためのいくつかの関数です。かなりインテリジェントに実装されていますね。ピクセル(スムージングされていない)実装のため、他の機能は使い物にならないと見ています。また、ビットマップではなく、ベクターグラフィックスとしてのキャンバス、つまり、写真をダウンロードするのではなく、自分で画像を形成する場合に興味があります。そのため、20枚のレディメイドの画像は実用に耐えないし、MT5をビデオプレーヤーとして使うこともできない。ベクターグラフィックスの目的は、30ミリ秒以下(より良いのは10ミリ秒以下)で画像をレンダリングすることです。どうせ人間の目には1秒間に30回以上画像が変化するようには見えないので。基本的にMT5のkanvasはこのタスクによく対処しています。確かに、あの色の渦巻きは限界(つまり、私の平均的なノートパソコンでは1フレームが約30ミリ秒で形成される)ですが、MT4ではすでに遅くなっていますね。

現在、時間の許す限りCCanvasProクラスを作成中で、その中でもう少し良いものを作りたいと思っています。
これまでの円(シャドウで滑らかにしたもの)は以下のとおりです。すみません、まだコードを開いていないのです。空き容量が不足しているため。

これもスクリプトです。

ファイル:
 
Evgeniy Zhdan:
レインボーチャートがかっこいいまた、音楽に合わせてキャンドルを踊らせたり、キャンドルの間をねじったりしたいですね

利益が上がるかどうか)踊るたびにボーナス、なら参加します(^^)))

 
Nikolai Semko:

もちろん効果はありますが、ひどいブレーキングが発生します。

若干の減速はありますが、ひどいブレーキングはありません。少なくともビジュアルは何も変わっていません。


 
Rashid Umarov:

若干の減速はありますが、ひどいブレーキングはありません。少なくともビジュアルは何も変わっていません。


もちろん、ちょっと厳しいことを言いました。それでも全体の性能からすると10%程度は遅くなります。

 
Rashid Umarov:

若干の減速はありますが、ひどいブレーキングはありません。少なくともビジュアルは何も変わっていません。


プロファイリング上ではなく、GetMicrosecondCountで 確認。

1000フレームで3-4%のスローダウンが判明しました。原理的にはそうだが、あまり危機感がない。

while(!IsStopped())
     {
      static ulong t0=GetMicrosecondCount();
      int pos=int(i%size);
      if(pos==0)
        {
         C.Update();
         //Sleep(30);
         X1= Width-(sin((double)j/100)*(double)Width);
         Y1= Height-(cos((double)j/140)*(double)Height);
         X2= Width+(cos((double)j/80)*(double)Width);
         Y2= Height+(sin((double)j/20)*(double)Height);
         if (j==101000) Print(GetMicrosecondCount()-t0);
         j++;
        }
      int X=pos%Width;
      int Y=int(pos/Width);
      double d= ((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))/(((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))+((X2-X)*(X2-X)+(Y2-Y)*(Y2-Y)));
      //C.m_pixels[pos]=XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]);
      C.PixelSet(X,Y,XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]));
      i++;
     }


 
Nikolai Semko:

CCanvas クラスを使ったカスタム・グラフィックスの機能を短いコードで示すという課題を自分に課した。

その中で出てきたのがこちら。

このスクリプトは、MQL5とMQL4の両方で動作します。しかし、MT5ではもっと速いです。

各フレームはユニークであり、繰り返さない、つまりスクリプトは循環しない。


コンパイル前にCanvas.mqhの配列m_pixels[]をprotected:からpublicに移動しておく必要があります。

30分ほど見て、離陸するのを待ちました ))

 
Alexey Volchanskiy:

30分ほど見て、離陸するのを待った ))

:))
 

正直なところ、何が言いたいのか理解できない。

そうですね、美しく、色鮮やかで、玉虫色で......。しかし、専門家の仕事にどのような影響を与えるのでしょうか。

ゲームを書くためにここにいるのならわかるのですが......そこでそんな機会が、ああ、どんなに需要があるのだろうと......。しかし、ここでは...

私の考えでは、不要なアクションを排除し、結果として生じるコードがシステムにできるだけ負荷をかけないようにすることが、逆に必要だと思います(クラウドにお金がかかるでしょう)。そして、メンテナンスもしやすいこと。

お客さまに "感動 "を与えることができなければ...。確かに、きれいにデザインされたアウトプットをすれば、フリーランスでより多くのお金を稼ぐことができますね...。

 
とてもクールです。ありがとうございます。これで、文字通り、トレードがもっと明るくなりますね。
 
George Merts:

正直なところ、何が言いたいのか理解できない。

そうですね、美しく、色鮮やかで、玉虫色で......。しかし、専門家の仕事にどのような影響を与えるのでしょうか。

ゲームを書くためにここにいるのならわかるのですが......そこでそんな機会が、ああ、どんなに需要があるのだろうと......。しかし、ここでは...

私の考えでは、不要なアクションを排除し、結果として生じるコードがシステムにできるだけ負荷をかけないようにすることが、逆に必要だと思います(クラウドにお金がかかるでしょう)。そして、メンテナンスもしやすいこと。

お客さまに "感動 "を与えることができなければ...。確かに、きれいにデザインされたアウトプットは、フリーランスでより多くのお金を稼ぐことができますね...。

指標に便利かもしれませんね。このCanvasには、さまざまな矢印のインジケーターが 描かれていて、記事もありました。

理由: