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
En la clase CGraphic, he sustituido el tipo de color por uint en todos los lugares, como me pediste.
Además, he añadido nuevos métodos a la clase CCanvas, que permiten dibujar primitivas con un grosor determinado:
En línea con la innovación de CCanvas, he ampliado las propiedades de CCurve:
Al dibujar una curva con líneas, ahora puede especificar el grosor de las líneas y el estilo de sus extremos.
Eso es increíble.
Se ha revisado el manejo de las splines (interpolación con curvas de Bézier). Su implementación se ha trasladado de la clase CGraphics directamente a CCanvas, lo que permite construir splines fuera de la biblioteca Graphics.
Además, se ha añadido un algoritmo para renderizar splines cerrados.
Como resultado, la clase CCanvas tiene ahora dos nuevos métodos públicos.
Estos métodos permiten dibujar splines con un estilo y un grosor determinados.
Dado que las curvas de Bézier describen los círculos y las elipses con bastante precisión, no hay necesidad obvia de aumentar la clase CCanvas con nuevos métodos para renderizar estas primitivas con un grosor determinado.
Ejemplo de aproximación de una elipse mediante curvas de Bézier basado en el método PolygoneSmooth:
Resultado:
Otro posible paso hacia la versatilidad de la biblioteca gráfica: un modo de dibujo de curvas personalizado CURVE_CUSTOM.
Este modo eliminará la necesidad de heredar la clase CGraphic y sobrecargar los métodos ...Plot para dibujar una curva de forma diferente a la que permiten las herramientas estándar de la biblioteca.
Para implementar este modo CURVE_CUSTOM se añadirán nuevas propiedades a la clase CCurve.
Se basa en un nuevo puntero a la función PlotFucntion.
Este enfoque abre nuevas posibilidades para dibujar parcelas.
Vamos a implementar el dibujo de velas en la biblioteca CGraphics como ejemplo:
1. Vamos a crear una clase contenedora en la que se almacenarán todos los datos de una sola vela.
Como la clase CCandle es descendiente de la clase CObject, todos los candelabros que queramos dibujar, podemos escribirlos secuencialmente en el objeto de la clase CArrayObj. Este array entrará en nuestro método de dibujo personalizado como parámetro cbdata. Como resultado, el método de dibujo de velas tendrá el siguiente aspecto.
3. Para simplificar, todos los candelabros se generarán aleatoriamente. Y así generamos secuencialmente 10 velas y llenamos el objeto de clase CArrayObj con ellas. A continuación, creamos el objeto CGraphics y añadimos una curva en él, mientras especificamos que se dibujará utilizando nuestra función PlotCandles. También tenemos que cambiar los valores máximos y mínimos del eje y, para que nuestras velas sean totalmente visibles.
Como resultado, obtenemos el siguiente gráfico:
@Roman Konopelko
hay un pequeño error en la función CGraphic::SetDefaultParameters
Los colores deben ser inicializados teniendo en cuenta la opacidad.
@Roman Konopelko
hay un pequeño error en la función CGraphic::SetDefaultParameters
Los colores deben inicializarse teniendo en cuenta la opacidad.
Este ejemplo hizo que el ordenador se congelara. Lo que hice: después de poner el indicador en el gráfico en el editor, jugué con diferentes combinaciones de comentar/descomentar las líneas 87 y 88 (cuando una a la vez, cuando juntas)
Repite el logro dos veces. No he registrado la secuencia de acciones. La tercera vez es trivial y me da miedo comprobarlo.
Añadido: build 1607 x64
Este ejemplo hizo que el ordenador se congelara. Lo que hice: después de poner el indicador en el gráfico en el editor, jugué con diferentes combinaciones de comentar/descomentar las líneas 87 y 88 (cuando una a la vez, cuando juntas)
Repite el logro dos veces. No he registrado la secuencia de acciones. La tercera vez es trivial y me da miedo comprobarlo.
Añadido: build 1607 x64
Hoy he repetido el récord: el ordenador se cuelga, y he conseguido que el consumo de RAM pase de 2 GB a 5,5 GB. Parece que ha conseguido cerrar el programa, pero el ordenador lleva colgado cinco minutos.
Esta vez he puesto un límite al tamaño de la matriz: no más de 300 elementos. Como puedes ver no sirvió de nada 🤔
¿qué dice la depuración?
¿qué dice la depuración?
Jbug no lo consiguió, hice lo siguiente: pasé un indicador y descomenté/comenté una o dos líneas y compilé. Acabé escribiendo desde una tableta, el portátil se estropeó...
El gbug no lo hizo, hice esto: pasé por encima del indicador y comenté/comenté una o dos líneas y compilé. Acabé escribiendo desde una tableta, el portátil se estropeó...
Entonces, el portátil después de un reinicio duro volvió a la vida, pero no quiero llevar a cabo más experimento destructivo - hay varios Asesores Expertos que se ejecutan en el portátil, por lo que no hay deseo de coger una congelación durante toda una hora.