class CGraphic { private: CArrayObj m_arr_curves; CCanvas m_canvas; //--- parameters background int m_height; int m_width; //--- parameters work space int m_left; int m_right; int m_up; int m_down; //--- default parameters work space int m_left0; int m_right0; int m_up0; int m_down0; //--- size of dash on the axes int m_mark_size; //--- scaling parameters double m_dx; double m_dy;
仮想 化しても、CGraphicsクラスのメンバに 完全にアクセスできなければ、通常のオーバーロードはできないので、すべて(ほとんど)protectedとして 宣言すべきです。
で、これらの関数 ***Plot は単にプロテクトされて いるだけです。
そして、これらの ***Plot 関数も同様に保護されて います。
{
private:
CArrayObj m_arr_curves;
CCanvas m_canvas;
//--- parameters background
int m_height;
int m_width;
//--- parameters work space
int m_left;
int m_right;
int m_up;
int m_down;
//--- default parameters work space
int m_left0;
int m_right0;
int m_up0;
int m_down0;
//--- size of dash on the axes
int m_mark_size;
//--- scaling parameters
double m_dx;
double m_dy;
CGraphicクラスのメンバについて ですが、現在はすべてプライベートになっており、m_canvas、m_dx、m_dyなどの子孫のメンバにアクセスしないと、オーバーロードが効きません。
OK、では全てお任せします)待ちます。
これまでは、ローカルで一時的に変更していました
一部の関数(どこでもというわけではありません)では、除算がある場合、0チェックなしです。
たとえば
{
...
...
double x_size=(m_x.Max()-m_x.Min());
double xf_size=xf2-xf1;
//--- keep scaling parameters
m_dx=xf_size/x_size;
ここで、x.Max() == Min()の場合、zero_devideが発生します。
Axis::CalcStepSize / CalcBoundedStepSize / SelectAxisScaleなどでも使用可能です。
一部の関数(どこでもというわけではありません)では、除算がある場合、0チェックなしです。
例えば
{
...
...
double x_size=(m_x.Max()-m_x.Min());
double xf_size=xf2-xf1;
//--- keep scaling parameters
m_dx=xf_size/x_size;
x.Max() == Min()のとき、zero_devideが発生する。
Axis::CalcStepSize / CalcBoundedStepSize / SelectAxisScaleなどでも使用可能です。
ありがとうございます、訂正します。
複数のチェックでライブラリに負荷をかけないようにするため、Axis::SelectAxisScalメソッドですべてのケースを考慮するようにしたのです。
1. enum ENUM_AXIS_TYPE に関する今朝の編集がないファイルであるようです。
---
2. 前ページの ENUM_AXIS_TYPE をテストした。
コールバック関数でValuesFunctionFormatを行っているため、関数内でvoid* パラメータを返す必要があります。
をCAxisに 追加する。
void* m_cbdata; // <---
...
// изменить
void ValuesFunctionFormat(DoubleToStringFunction func, void* cbdata) { m_values_func=func; m_cbdata=cbdata; }
// добавить получение этого void*
void* ValuesFunctionFormatCBData(void) const { return m_c bdata; }
in CGraphic::CalculateXAxis
void* cbdata=m_x.ValuesFunctionFormatCBData(); // <---
...
case AXIS_TYPE_CUSTOM:
{
m_xvalues[i]=(xfunc==NULL) ? NULL : xfunc(x, cbdata); // <---
----
このコールバックパラメータは、arrX 配列がどこにあるかを知っているオブジェクトへの ポインタを渡すために必要です。
この関数は基本的に静的なものなので、一体何が呼び出したのかを知ることはできません。
ZSです。
そして、時系列表示の結果はすでにこんな感じです(読みのある線については後で詳しく聞きます。そこで座標を取得するのに不便な点があります)
そして、時系列の結果は、原理的にはすでにこのようになっています(読みのある線については後で詳しく聞きますが、そこには座標を取得する厄介さがありますね :)。
グラフが空になった瞬間から、ビデオか長めのアニメーションを作ってください。GIFではわからない。
が良いのでしょうか?
この専門家は、RomanのCanvasとCGraphicを 担当しています。
この場合、いくつかのツールからP/Lを構築しています。この専門家は、Roman's Canvas + CGraphicを担当しています。
この場合、私はその上にいくつかの楽器からP/Lを構築します。よりクリアになりました。十字キー(と、おそらく他のインタラクティブ機能)は、Romanのライブラリのビルトイン(必要な)機能なのでしょうか、それとも継承されたのでしょうか?
十字キー、ズーム(両方向)、カーソル値のハイライトなど、SBグラフィックスにインタラクティブな要素が欲しいです。
例えば、EA/indicator経由でGraphPlotを行うと、そのような機能が一度に得られます。
今、はっきりさせること。十字キー(と、おそらく他のインタラクティブ機能)は、Romanのバイブルにビルトイン(必要な)機能なのでしょうか、それとも継承したのでしょうか?
はい、受け継ぎました。
十字キー、ズーム(両方向)、カーソル値のハイライトなど、SBグラフィックスにインタラクティブな要素が欲しいです。
メインの方とお話します。私も何か必要です。
- バックライト(それでなくても、少なくともGetNearY/X関数)は必要です。強調表示はどうせなら継承で実装した方が良い。それぞれの表現で違うんです )
- は、まだライブラリとは関係のないチャートイベントの結果なので、十字線自体はまだ必要ありません。
- 画素座標で決まるスケール値の取得は必須です。
- zoomoの場合は、それが厄介なんです。スクロールバーがないため正直なところ、このクラスには実装してほしくありません。今はCCanvasだけを使っていて、他のオブジェクトは要求してきません。そして、これは非常に良いことです。
ズームは継承で独立して実装し、スクロールバーを つけ、必要に応じて再スケールする予定です。