//--- draw mark and set y valueint yi_width=m_canvas.TextWidth(yvalue);
m_canvas.TextOut(m_left-yi_width-m_mark_size-m_gap,m_yc[i]-yh/2,yvalue,ColorToARGB(clrBlack),TA_LEFT);
if(m_mark_size>0.0)
m_canvas.LineHorizontal(x1,x2,m_yc[i],ColorToARGB(clrBlack));
...
//--- draw mark and set y value
m_canvas.TextOut(m_xc[i]-xw/2,y2+m_gap,xvalue,ColorToARGB(clrBlack));
if(m_mark_size>0.0)
m_canvas.LineVertical(m_xc[i],y1,y2,ColorToARGB(clrBlack));
//+------------------------------------------------------------------+//| Test_CLine.mq5 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2016, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputs#include <Graphics\Graphic.mqh>
#include <Graphics\Axis.mqh>
inputint pix_X=800;//Ширина графика балансаinputint pix_Y=400;//Высота графика балансаinputbool Use_Koef=true;//Использовать коэфициент для установки ширины графика Parallelinputdouble Point_Kx=0.5;//Коэффициент ширины графика Parallelinputint Point_K=12;//Размер шрифта//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
Save_Graf_P();
}
//+------------------------------------------------------------------+void Save_Graf_P()
{
int pixx_Y=pix_Y;
int pixx_X=pix_X;
//--- отключим показ ценового графикаChartSetInteger(0,CHART_SHOW,false);
long chart=0;
string NameGraf="Test Line";
CGraphic graphicL;
if(ObjectFind(chart,NameGraf)<0)
{
graphicL.Create(chart,NameGraf,0,0,0,pixx_X,pixx_Y);//Создает графический ресурс, привязанный к объекту чарта
}
graphicL.Attach(chart,NameGraf);//Получить/создать графический ресурс и привязать его к экземпляру класса CGraphic
graphicL.BackgroundMain(NameGraf);//Получить/установить текст заголовка графика
graphicL.BackgroundMainSize(16);//Получить/установить размер шрифта заголовка
graphicL.HistoryNameSize(Point_K);//Устанавливает размер шрифта имени кривой
graphicL.HistorySymbolSize(Point_K);//Получить/установить размер символов условных обозначений
graphicL.LineAdd(-5,10,5,10,ColorToARGB(Blue,255),POINT_HORIZONTAL_DASH);//Создает и добавляет линию на график
graphicL.CurvePlotAll();//Отрисовывает все ранее созданные кривые
graphicL.Update();//Отображает на экране сделанные измененияResetLastError();
Sleep(3000);
graphicL.Destroy();//Удаляет с чарта график и уничтожает графический ресурс.ChartSetInteger(0,CHART_SHOW,true);
}
总之,我已经厌倦了向你解释。那些想要的人,会理解的。
谢谢你的耐心,因为这是一个正常的现象,我现在会知道它,并在分析我的代码中的错误时考虑到它。但我希望他们 能放弃一个错误--当它不可能的时候是一回事,而当我们称它为特殊性而不是错误的时候又是另一回事,那就是当这个特殊性被一个既定的传统所解释时。
指向这段代码 -D.PointsFill(false)。
这个错误是由于X和Y数组的大小 不同造成的--为什么你不能在日志中写到这个问题是个谜。
谢谢你的耐心,因为这是一个正常的现象,我现在会知道它,并在分析我的代码中的错误时考虑到它。但我希望他们能放弃一个错误--不可能是一回事,而另一回事是,让我们称它为特殊性而不是错误,所以当一个特殊性被一个既定的传统所解释。
请记住一件事:_LastError不仅包含真正的错误代码,还包含关于函数的信息代码。在我们讨论的案例中,它是指那里没有对象的代码。而这一切都取决于上下文,当有特定名称的对象被请求时。如果是修改对象,这段代码会表明需要了解为什么我的对象突然消失了,如果是创建一个新的对象,代码会告诉你没有这样一个对象--这里正好相反--一切正常,你可以创建它。
并把它作为一个规则:检查函数的返回结果,如果它返回一个真正的错误,那么分析错误代码。
在你的例子中,你是在自欺欺人,因为画布对象的创建 是成功的,你认为在某个地方出现了错误。
请记住一件事:_LastError不仅包含真正的错误代码,也包含函数信息的代码。在这种情况下,它是没有对象的代码。而这一切都取决于上下文,在这种情况下,一个具有特定名称的对象被请求。如果是修改对象,这段代码将表明需要了解为什么我的对象突然消失了,如果是创建一个新的对象,代码说没有这样的对象--这里正好相反--一切正常,你可以创建它。
并把它作为一条规则:你必须检查函数的返回结果,如果它返回一个真正的错误,那么就分析错误代码。
你把你的例子搞得一团糟,说有一个成功的cantvas对象的创建,你认为在某个地方有一个错误。
好的,我将尝试在分析错误时以你描述的方式思考。谢谢你。
也许你可以回答我在这个主题中的问题,这些问题一直没有得到回答--关于改变图例的大小和禁止在这个图例中放置有关创建的曲线的信息?
好的,我在分析错误时,会试着按照你描述的思路思考。谢谢你。
也许你可以回答我在这个主题中的问题,这些问题没有得到回答--关于调整图例的大小和不允许在这个图例中提供所创建的曲线的信息?
我做不到--这需要时间。对不起,我没有时间。
好的,我在分析错误时,会试着按照你描述的思路思考。谢谢你。
我做不到--这需要时间。唉,我没有了,对不起。
明白了。我等着知道或有时间的人。但我明白,你不能用图书馆的常规工具来做这件事。
CGraphic::CreateAxes 中的错误。
应该是m_y.Color() 和m_x.Color() 而不是selected,分别。
通过继承CGraphic并重写CreateAxes(虚拟的,感谢上帝)解决了这个问题。
同样的CGraphic::CreateAxes 使用m_grid.clr_frame,它不能被独立设置。
必须添加一个方法来设置值。
为什么横线 没有画在图上?为什么它的坐标是int类型而不是double?