ライブラリ: イージーキャンバス - ページ 19

 

あなたのコードを使ってみて、いくつか改善点を提案したい。数学関数は私のコードと名前が重複しています。また、あなたのマクロは最後に定義をキャンセルしているので、同じ定義を使用すると私のコードで問題が発生する可能性があります。最後にもう1つ、OnChartEventを 宣言する前に定義を取り除くといいでしょう。そうすることで、再定義の警告が出なくなります(あなたのファイルが添付される前に関数がすでに定義されていた場合)。

//+------------------------------------------------------------------+
int MyCeil (const double x) {
   return (x-(int)x>0)?(int)x+1:(int)x;
}
//+------------------------------------------------------------------+
int MyRound(const double x) {
   return (int)(x+((x>0)?0.5:-0.5));
}
//+------------------------------------------------------------------+
int MyFloor(const double x) {
   return (x>0)?(int)x:((int)x-x>0)?(int)x-1:(int)x;
}
#define  Ceil  MyCeil
#define  Round  MyRound
#define  Floor  MyFloor

...........

//+------------------------------------------------------------------+
#undef OnChartEvent
#define OnChartEvent SetOnChart(int x) {OnChart=true;  OnZ=false;}\
void MyChartEvent

#undef  Ceil
#undef  Round
#undef  Floor
#undef _Font
 
hini OnChartEventを 宣言する前に定義を取り除くといいでしょう。そうすることで、再定義の警告が出なくなります(あなたのファイルが添付される前に関数がすでに定義されていた場合)。
このライブラリは、私がソフトウェア・エンジニアとして5年間教育を受ける前の7年前に作成されたものです。 今なら、このライブラリの書き方は全く違ったものになるでしょう。少なくとも名前空間を使うだろう。
あなたが求めていることは、私やこのライブラリを使っている他の人たちの既存のコードの多くを壊してしまうので、私にはできません。
あなたのところでも名前空間を使ってみてください。

 
Nikolai Semko #:
このライブラリは、私がソフトウェア・エンジニアとして5年間教育を受ける前の7年前に作られたものだ。 今なら、このライブラリの書き方はまったく違うだろう。少なくとも名前空間を使うだろう。
なぜなら、私やこのライブラリを使っている他の人たちの既存のコードの多くを壊してしまうからです。
あなたのところでも名前空間を使ってみてください。

もしあなたが質の高いEasy Canvas 2ライブラリを作ってくれたら、100500人のプログラマが寝る前に心から感謝するでしょう。

私はそれがとても必要なのですが、自分で作るには十分な知識がありません...。
 
Vladimir Pastushak #:

質の高いEasy Canvas 2ライブラリを作ってくれたら、100500人のプログラマが寝る前に心から感謝します。

私はそれがとても必要なのですが、自分で作るには知識が足りないのです...。

Vladimir、Renatは最近、ターミナルとエディタにBlend2Dを 実装すると言った
そしてそれは、このライブラリがすでに初歩になるということだ。重要なのは、彼らの意図を長い構造にしないことだ。

Blend2D
Blend2D
  • blend2d.com
2D Vector Graphics Engine
 
Vladimir Pastushak #:

質の高いEasy Canvas 2ライブラリを作ってくれたら、100500人のプログラマが寝る前に心から感謝します。

私はそれがとても必要なのですが、自分で作るには十分な知識がありません...。

この100500人の プログラマーから少なくとも1ドル集めれば、ニコライはきっとやってくれるだろう。ニコライ、新しい書誌を作ってくれ、そしたら感謝する!」)。

グラフィックのための質の高い書誌は高価だ。例えば、ある著者はこのようなケースについて多くの記事を書いた。その書誌はどこにあるのか?切羽詰って仕事をしている、だから人気がないのだ......。

 
Nikolai Semko #:

これは、複数のサブウィンドウと複数の iCanvas インスタンスを制御するために行われます。結局のところ、インジケータの作業過程でウィンドウを追加したり削除したりすることができます。
例えば、このインジケーターにはそれが必要です:

https://www.mql5.com/ja/code/25414

オブジェクトは実質的に最初に作成されるため、その後にさらにオブジェクトが作成された場合、ライブラリ・オブジェクトと重なってしまいます。

 
Vladimir Pastushak #:

オブジェクトはほぼ最初に作成されるため、その後にさらにオブジェクトが作成された場合、ライブラリ・オブジェクトと重なってしまう。

ああ、そうあるべきだね。何が問題なんだ?
Zインデックスを変更する必要がある場合は、正しい順序でオブジェクトを再作成する必要があります
 
Nikolai Semko #:
ああ、そうあるべきだね。何が問題なんだ?
Z-インデックスを変更する必要がある場合は、正しい順序でオブジェクトを再作成する必要があります。

ありがとうございます、その後考えたのですが......。