Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
- Es difícil con zoomo. Como no hay barras de desplazamiento. Y para ser honesto, no me gustaría que se implementaran en esta clase. Ahora mismo sólo utiliza CCanvas, y no pide otros objetos. Y esto es muy bueno.
Tengo pensado implementar el zoom de forma independiente por herencia, poner barras de desplazamiento y reescalar cuando sea necesario.
Las barras de desplazamiento son malas. Puede hacer girar un gráfico normal sin barras, con el ratón y el teclado.
no hay eventos de gráfico para el desplazamiento. MQL no los envía.
Pero puedes simplemente arrastrar y soltar con el ratón en lugar de girar la rueda.
pero puedes simplemente arrastrar y soltar con el ratón en lugar de girar la rueda.
@Roman Konopelko
¿Y el número 36?
Y encontró otra división en cero
Puedo aclarar (para reproducir)
se ha añadido una curva CurveAdd(arrY, CURVE_HISTOGRAM, "P/L"); tiene un array arrY de tamaño 1 o 0 elementos.
y a juzgar por este constructor de curvas m_xmax=m_xmin=0.
@Roman Konopelko
¿Y el número 36?
Y encontró otra división en cero
Implementado #36 y corregido el error de división a cero.
Lo único es que ValuesFunctionFormat no ha cambiado a:
void ValuesFunctionFormat(DoubleToStringFunction func, void* cbdata) { m_values_func=func; m_cbdata=cbdata; }
E implementado métodos para obtener/establecer un puntero a una función y un puntero a un objeto para ello por separado:
void ValuesFunctionFormat(DoubleToStringFunction func) { m_values_func=func; }
void *ValuesFunctionFormatCBData(void) const { return(m_values_cbdata); }
void ValuesFunctionFormatCBData(void *cbdata) { m_values_cbdata=cbdata; }
Por favor, arregla el manejo de colores en kanvas.
Ahora no tiene en cuenta el canal alfa. color en lugar de uint está en todas partes.
Debido a esto, al dibujar en el lienzo, hay huecos de gráfico en todas partes (rejillas y marcos transparentes, porque en color el canal alfa =0, es decir, completamente transparente)
Sólo que en algunas funciones lo arreglaste llamando constantemente a ColorToARGB
Por ejemplo
{
...
//--- 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));
Pero, ¿por qué? si quieres hacer que el color sea de tipo uint y establecerlo con el canal alfa
Como aquí (y en otras funciones de color)
{
...
//--- 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.
El hecho de que el propio lienzo tenga COLOR_FORMAT_XRGB_NOALPHA no es importante en este caso.
decidió comprobar las correcciones en la actualización del terminal 1502
¿dónde se han hecho todas las mejoras?
No hay ValuesFunctionFormat, ni correcciones de errores zerodevide
LOL
felices fiestas )
instalado 1510.
ValuesFunctionFormat está ahí, está bien.
--
@Roman Konopelko vea la frase #47 por favor.
En el código CGraphic son sólo algunas variables y funciones. La sustitución no es difícil.
Pero elimina el problema de la transparencia en el renderizado. Porque en color el canal alfa =100% de transparencia, lo cual es incorrecto.
@Roman Konopelko vea la frase #47 por favor.
En el código de CGraphic sólo hay unas pocas variables y funciones. La sustitución no es difícil.
Pero elimina el problema de la transparencia al renderizar. De hecho, en color el canal alfa = 100% de transparencia, lo cual es incorrecto.
También he añadido nuevos métodos en la clase CCanvas, que permiten dibujar primitivas con un grosor determinado:
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; }
Ejemplo:
//+------------------------------------------------------------------+
//| 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();
}
La aplicación de estos métodos se basa en el algoritmo Fast Prefiltered Lines, en el que el grado de suavidad de las líneas se basa en el filtro seleccionado. Si es necesario, lo describiré con más detalle.