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类成员 的情况下进行正常的重载,所以你必须把它们中的所有(大部分)声明为保护的。
而这些函数***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和其他子类中的成员,重载就无法工作。
好吧,那么一切就交给你了)我等着。
到目前为止,我已经在本地临时改变了它
在一些函数中(不是所有地方),如果有除法,是没有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中没有得到。
这样好吗?
这位专家在罗马的画布+CGraphic 上工作。
在这种情况下,我正在从几个工具中建立一个P/L。这位专家在Roman的Canvas + CGraphic上工作。
在这种情况下,我从几个工具上建立P/L现在更清楚了。十字线(以及可能的其他互动性)是罗曼库的内置(必要)功能,还是你继承了它?
我想在SB图形中看到交互性元素--十字准线、缩放(两个方向)和光标值的高亮显示。
也就是说,我通过EA/指示器做GraphPlot,一下子就得到了这样的功能。
现在要更清楚地说明。十字线(可能还有其他互动性)是罗曼圣经的内置(必要)功能,还是你继承了它?
是的,我继承了它。
我想在SB图形中看到一些交互性的元素--十字准线、缩放(两边)和光标值的高亮。
我们将与主要的一个人进行交谈。我也需要一些东西。
- 需要背光(如果不是它,那么至少是GetNearY/X函数)。反正最好是通过继承来实现突出显示。在我们每个人的表述中都是不同的 )
- 现在还不需要crosshair本身,因为它是图表事件的结果,与库没有关系。
- 获得比例值--由像素坐标决定--是必须的。
- 使用zoomo很困难。因为没有滚动条。而且说实话,我也不希望他们在这个班上实施。现在,它只使用CCanvas,不要求任何其他对象。而这是非常好的。
我计划通过继承独立实现缩放,放上滚动条,并根据需要重新缩放。