El lienzo es genial. - página 14

 
Nikolai Semko:

Así que no escuchaste mi mensaje.

Pero hay que redondear los números dobles para dar las coordenadas. No hay otra manera.

 
Реter Konow:

Pero hay que redondear los números dobles para dar las coordenadas. No hay otra manera.

No hay que redondear nada.

Aquí hay un script, como ejemplo.

Ejecútalo primero con los parámetros por defecto (con círculos suavizados y coordenadas y dimensiones de tipo doble)

y luego ejecutarlo con el parámetro typ = not_smoothed_circles (con círculos antialiasing y coordenadas y tamaños de tipo int - de la clase CCanvas).

y verás lo que quiero decir.

Es mejor hacerlo sobre fondo blanco, no sobre fondo negro

Archivos adjuntos:
 
Nikolai Semko:

Basado en Doom...

Me pregunto por qué la imagen se congela al desplazar el gráfico con el ratón.


Es una pena que no se pueda matar un recurso. Por ejemplo, se apaga el indicador de llama. Y el objeto con el recurso se queda colgado. El objeto se puede matar, pero el recurso - no. Al final, es fácil comerse toda la memoria del Terminal y así desactivar imperceptiblemente los Asesores Expertos.

 

Hay un montón de bibliotecas 3D escritas en JavaScript desde hace cien años. La forma más fácil y directa es reescribirlos de allí a aquí.

No durante 100 años, por supuesto, sino unos cuantos.

 
fxsaber:

Me pregunto por qué la imagen se congela al desplazar el gráfico con el ratón.

debe ser por el control de eventos CHARTEVENT_CHART_CHANGE en mi clase iCanvas

no hay tal control en el script y no hay congelación.

Archivos adjuntos:
fire.mq5  9 kb
 
Nikolai Semko:

No hay que redondear nada.

Aquí hay un script como ejemplo.

Ejecútalo primero con los parámetros por defecto (con círculos antialiasing y coordenadas y dimensiones de tipo double)

y luego ejecutarlo con el parámetro typ = not_smoothed_circles (con círculos antialiasing y coordenadas y tamaños de tipo int - de la clase CCanvas).

y verás lo que quiero decir.

Es mejor hacerlo sobre fondo blanco, no negro.

Sí, tiene muy buena pinta. Formas de calidad de los círculos.

Pero, estás usando la clase CCanvas, y allí las coordenadas se establecen en int.

 
fxsaber:

Me pregunto por qué la imagen se congela al desplazar el gráfico con el ratón.


Es una pena que no se pueda matar un recurso. Por ejemplo, se apaga el indicador de llama. Y el objeto con el recurso se queda colgado. El objeto se puede matar, pero el recurso - no. Simplemente se come toda la memoria del Terminal y por lo tanto desactiva discretamente los Asesores Expertos.

¿Y ResourseFree()?

 
fxsaber:

Es una pena que no se pueda matar un recurso. Por ejemplo, se apaga el indicador de llama. Deja un objeto con un recurso colgado. Se puede matar el objeto, pero no el recurso. Al final, puedes comerte fácilmente toda la memoria del Terminal y, por tanto, desactivar imperceptiblemente los Asesores Expertos.

¿Pero por qué?

Utilizo un destructor en mi clase

~iCanvas() { Destroy(); ChartRedraw();};

y destruir:

void CCanvas::Destroy(void)
  {
//--- delete object
   if(m_objname!=NULL)
     {
      ObjectDelete(m_chart_id,m_objname);
      m_chart_id=0;
      m_objname =NULL;
      m_objtype =WRONG_VALUE;
     }
//--- deallocate array
   ArrayFree(m_pixels);
//--- free resource
   if(m_rcname!=NULL)
     {
      ResourceFree(m_rcname);
      m_rcname=NULL;
     }
//--- zeroize data
   m_width =0;
   m_height=0;
  }
 
Nikolai Semko:

esto se debe probablemente al control del evento CHARTEVENT_CHART_CHANGE en mi clase iCanvas

En el guión, no hay tal control y no hay congelación.

Sí, no hay problema en el guión.


Tengo mucha curiosidad por saber cómo quedaría.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Nueva versión de MetaTrader 5 build 1930: Ventanas de gráficos flotantes y bibliotecas .Net en MQL5

fxsaber, 2019.01.14 21:37

Queda por hacer un dibujo del pensamiento con la llave del gas cerrada.

Pero lo realmente espectacular es prender fuego a las propias barras y líneas de objetos.


También se pueden hacer las barras como si fueran rendijas en el horno. Es como si estuvieras viendo las llamas a través de ellas.


Esto requiere un poco de trabajo: crear un segundo búfer de lienzo como una copia de la llama principal, y luego aplicar un filtro en la ubicación de los píxeles de las barras. No debería ser difícil, a primera vista.

 
Nikolai Semko:

¿Por qué?

Utilizo un destructor en mi clase

y destruir:

Pues entonces por alguna razón no funcionó, ya que me queda todo.