
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
- Es ist schwierig mit Zoomo. Da es keine Bildlaufleisten gibt. Und um ehrlich zu sein, würde ich nicht wollen, dass sie in dieser Klasse eingeführt werden. Momentan verwendet es nur CCanvas und fragt nicht nach anderen Objekten. Und das ist sehr gut.
Ich plane, den Zoom unabhängig durch Vererbung zu implementieren, Scrollbalken einzufügen und die Skalierung nach Bedarf anzupassen.
Bildlaufleisten sind böse. Sie können ein normales Diagramm ohne Balken drehen - mit der Maus und der Tastatur.
Es gibt keine Diagrammereignisse für das Scrollen. MQL sendet sie nicht.
Sie können aber auch einfach mit der Maus ziehen, anstatt das Rad zu drehen.
aber Sie können einfach mit der Maus ziehen, anstatt das Rad zu drehen.
@Roman Konopelko
Was ist mit der Nummer 36?
Und eine weitere Nullteilung gefunden
Ich kann Folgendes klarstellen (zur Reproduktion)
eine CurveAdd(arrY, CURVE_HISTOGRAM, "P/L") Kurve wurde hinzugefügt; sie hat ein Array arrY der Größe 1 oder 0 Elemente.
und nach diesem Kurvenkonstruktor zu urteilen ist m_xmax=m_xmin=0.
@Roman Konopelko
Was ist mit der Nummer 36?
Und eine weitere Nullteilung gefunden
#36 implementiert und den Fehler bei der Nullteilung behoben.
Das einzige Problem ist, dass sich ValuesFunctionFormat nicht geändert hat:
void ValuesFunctionFormat(DoubleToStringFunction func, void* cbdata) { m_values_func=func; m_cbdata=cbdata; }
Und implementierte Methoden, um einen Zeiger auf eine Funktion und einen Zeiger auf ein Objekt für diese Funktion separat zu erhalten/zu setzen:
void ValuesFunctionFormat(DoubleToStringFunction func) { m_values_func=func; }
void *ValuesFunctionFormatCBData(void) const { return(m_values_cbdata); }
void ValuesFunctionFormatCBData(void *cbdata) { m_values_cbdata=cbdata; }
Bitte korrigieren Sie die Farbbehandlung im Kanvas.
Jetzt wird der Alphakanal nicht mehr berücksichtigt. color statt uint ist überall.
Aus diesem Grund gibt es beim Zeichnen auf der Leinwand überall Diagrammlücken (transparente Gitter und Rahmen, da bei Farbe der Alphakanal =0, d.h. völlig transparent)
Nur in einigen Funktionen haben Sie das Problem durch den ständigen Aufruf von ColorToARGB behoben
z.B..
{
...
//--- create background
m_canvas.FillRectangle(0,0,m_width,m_up-1,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(0,m_height-m_down+1,m_width,m_height,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(0,m_up,m_left-1,m_height-m_down,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(m_width-m_right+1,m_up,m_width,m_height-m_down,ColorToARGB(m_background.clr,255));
Aber warum? wenn Sie Farbe ein uint-Typ und setzen Sie es mit Alpha-Kanal machen wollen
Wie hier (und in anderen Farbfunktionen)
{
...
//--- sets the default values for grid
m_grid.clr_line=ColorToARGB(clrWhiteSmoke);
m_grid.clr_axis_line=ColorToARGB(clrSilver);
m_grid.clr_frame=ColorToARGB(clrBlack);
m_grid.clr_background=ColorToARGB(clrWhite);
----
PS.
Die Tatsache, dass die Leinwand selbst COLOR_FORMAT_XRGB_NOALPHA hat, ist in diesem Fall nicht wichtig.
beschlossen, die Korrekturen im Terminal-Update 1502 zu überprüfen
wo werden alle Verbesserungen vorgenommen?
Kein ValuesFunctionFormat, keine Fehlerbehebungen zerodevide
LOL
Frohe Feiertage )
1510 installiert.
ValuesFunctionFormat vorhanden ist, ist es in Ordnung.
--
@Roman Konopelko siehe Satz #47 bitte.
In CGraphic-Code sind es nur ein paar Variablen und Funktionen. Die Ersetzung ist nicht schwierig.
Aber es beseitigt das Problem der Transparenz beim Rendering. Denn in Farbe ist Alphakanal =100% Transparenz, was falsch ist.
@Roman Konopelko siehe Satz #47 bitte.
Im CGraphic-Code gibt es nur wenige Variablen und Funktionen. Die Ersetzung ist nicht schwierig.
Aber es beseitigt das Problem der Transparenz beim Rendern. In der Tat, in Farbe Alpha-Kanal = 100% Transparenz, die falsch ist.
Außerdem habe ich neue Methoden in der CCanvas-Klasse hinzugefügt, die es erlauben, Primitive mit einer bestimmten Dicke zu zeichnen:
void LineThickHorizontal(const int x1,const int x2,const int y,const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void LineThick(const int x1,const int y1,const int x2,const int y2,const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void PolylineThick(const int &x[],const int &y[],const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void PolygonThick(const int &x[],const int &y[],const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
int LinesWidth(void) const { return(m_lines_width); }
void LinesEndStyle(ENUM_LINE_END end_style) { m_lines_end_style=end_style; }
void LinesWidth(const int width) { m_lines_width=width; }
Beispiel:
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
double x[] = { -100, -40, -10, 20, 30, 40, 50, 60, 70, 80, 120 };
double y[] = { -5, 4, -10, 23, 17, 18, -9, 13, 17, 4, 9 };
CGraphic graphic;
graphic.Create(0,"G",0,30,30,780,380);
//--- plot curve
CCurve *curve=graphic.CurveAdd(x,y,CURVE_LINES);
curve.LinesSmooth(true);
curve.LinesStyle(STYLE_DOT);
curve.LinesEndStyle(LINE_END_ROUND);
curve.LinesWidth(10);
graphic.CurvePlotAll();
graphic.Update();
}
Die Umsetzung dieser Methoden basiert auf dem Algorithmus Fast Prefiltered Lines, bei dem der Grad der Linienglättung vom gewählten Filter abhängt. Falls erforderlich, werde ich sie ausführlicher beschreiben.