El lienzo es genial. - página 2

 
fxsaber:

CCanvas es una envoltura para ResourceCreate. Así, por ejemplo, si tiene 20 imágenes listas en forma de matrices. Si quieres cambiarlos a través del lienzo, tendrás que hacer un costoso ArrayCopy+Update.

Y si lo haces sin CCanvas, sólo necesitarás ResourceCreate+ChartRerdraw. He publicado varios trabajos de dibujo dinámico en kodobase. Allí era obvio que CCanvas no era bueno.

Estoy de acuerdo en que es una envoltura de recursos. Tenemos que llegar a un acuerdo sobre las definiciones. El lienzo, según tengo entendido, no es una clase CCanvas, sino un recurso gráfico rectangular, es decir, una matriz de puntos. Lo que necesito de la clase CCanvas son unas cuantas funciones para crear, actualizar y eliminar. Está implementado de forma bastante inteligente, las otras funciones las veo inútiles debido a la implementación de píxeles (sin suavizar). Además, me interesa el kanvas como gráfico vectorial, no como mapa de bits, es decir, cuando yo mismo forme la imagen, en lugar de descargar imágenes. Por lo tanto, no veo ningún uso práctico para una 20 imágenes listas y no puedo utilizar MT5 como un reproductor de vídeo. El objetivo de los gráficos vectoriales es renderizar una imagen en menos de 30 (o, mejor, menos de 10) milisegundos. De todos modos, el ojo humano no verá que la imagen cambia más de 30 veces por segundo. Básicamente kanvas en MT5 hace frente a esta tarea bien. Es cierto que esos remolinos de colores están al límite (es decir, un fotograma se forma unos 30 milisegundos en mi portátil medio), pero en MT4 ya se ralentiza.

Ahora estoy haciendo una clase de CCanvasPro mientras el tiempo me lo permite, en la que quiero mejorar un poco las cosas.
Esto es lo que he conseguido hasta ahora con los círculos (suavizados con sombras). Lo siento, aún no he abierto el código. Por falta de tiempo.

Esto también es un guión.

Archivos adjuntos:
 
Evgeniy Zhdan:
Un gráfico de arco iris muy chulo. También me gustaría hacer que las velas bailaran al ritmo de la música y se retorcieran entre ellas.

¿Aumentará los beneficios?) Un bono por cada baile, entonces me apunto)).

 
Nikolai Semko:

Por supuesto que ayudará, pero habrá una frenada terrible.

Habrá una ligera ralentización, pero no un frenazo horrible. Al menos visualmente, nada ha cambiado.


 
Rashid Umarov:

Habrá una ligera ralentización, pero no un frenazo horrible. Al menos visualmente, nada ha cambiado.


Por supuesto, fui un poco duro. Pero aún así, será un 10% más lento que el rendimiento general.

 
Rashid Umarov:

Habrá una ligera ralentización, pero no un frenazo horrible. Al menos visualmente, nada ha cambiado.


Comprobado no en el perfil, sino conGetMicrosecondCount

Resultó un 3-4% de ralentización a 1000 fotogramas. En principio, sí, no es muy crítico.

while(!IsStopped())
     {
      static ulong t0=GetMicrosecondCount();
      int pos=int(i%size);
      if(pos==0)
        {
         C.Update();
         //Sleep(30);
         X1= Width-(sin((double)j/100)*(double)Width);
         Y1= Height-(cos((double)j/140)*(double)Height);
         X2= Width+(cos((double)j/80)*(double)Width);
         Y2= Height+(sin((double)j/20)*(double)Height);
         if (j==101000) Print(GetMicrosecondCount()-t0);
         j++;
        }
      int X=pos%Width;
      int Y=int(pos/Width);
      double d= ((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))/(((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))+((X2-X)*(X2-X)+(Y2-Y)*(Y2-Y)));
      //C.m_pixels[pos]=XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]);
      C.PixelSet(X,Y,XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]));
      i++;
     }


 
Nikolai Semko:

Me propuse una tarea: demostrar las capacidades de los gráficos personalizados a través de la clase CCanvas en un código corto.

Esto es lo que ha resultado.

Este script funciona tanto en MQL5 como en MQL4. Pero es mucho más rápido en MT5.

Cada fotograma es único y no se repite, es decir, el guión no es cíclico.


Debes mover el array m_pixels[] de protected: a public en Canvas.mqh antes de compilar:

media hora mirando, esperando que esta cosa despegue ))

 
Alexey Volchanskiy:

media hora de observación, esperando que esta cosa despegue ))

:))
 

Francamente, no entiendo de qué se trata.

Bueno, sí, hermoso, colorido, iridiscente... Pero, ¿cómo afectará al trabajo del experto?

Lo entendería, si estuviéramos aquí para escribir el juego - que es donde tal oportunidad oh, cómo se exige... Pero aquí...

En mi opinión, es necesario justo lo contrario: deshacerse de cualquier acción innecesaria, para que el código resultante cargue el sistema lo menos posible (requeriría dinero en la nube). Y también debe ser más fácil de mantener.

A menos que - "efecto sorpresa" para los clientes... Creo que es cierto, una salida bien diseñada te permite ganar más dinero en Freelance...

 
Muy chulo, gracias, ahora el comercio será mucho más brillante, literalmente.
 
George Merts:

Francamente, no entiendo de qué se trata.

Bueno, sí, hermoso, colorido, iridiscente... Pero, ¿cómo afectará al trabajo del experto?

Lo entendería, si estuviéramos aquí para escribir el juego - que es donde tal oportunidad oh, cómo se exige... Pero aquí...

En mi opinión, es necesario justo lo contrario: deshacerse de cualquier acción innecesaria, para que el código resultante cargue el sistema lo menos posible (requeriría dinero en la nube). Y también debe ser más fácil de mantener.

A menos que - "efecto sorpresa" para los clientes... Creo que es cierto, una salida bien diseñada te permite ganar más dinero en Freelance...

Puede ser útil para los indicadores. Había diferentes indicadores de flechas dibujados aquí en el lienzo, incluso había un artículo.

Razón de la queja: