Realización de un proyecto crowdsourced en Canvas - página 20

 

Comparando estas fórmulas, los resultados son realmente diferentes. También he comparado las velocidades.

La mitad izquierda está formada por tres capas de color diferentes, con 128 de transparencia en todas partes. Los colores son mezclados por el terminal.

La de arriba a la derecha está hecha en una sola capa, mezclada según la wiki inglesa.

Abajo a la derecha en una capa, según la wiki rusa.


Comparación entre el terminal y la wiki en inglés mediante una captura de pantalla (el terminal desde arriba)


Comparación de fórmulas por recursos guardados en un archivo (inglés de arriba)


Se necesita mucho tiempo para crear un recurso, en comparación con el cálculo del color y el llenado de la matriz hasta 10 veces, probablemente no tiene sentido tratar con OCL.

PS Parece una buena idea, puede photoshop en MT bang en :)

Archivos adjuntos:
script.mq5  4 kb
 
Los que conocen la clase CCanvas, ¿podrían decirme si es posible crear un gradiente allí? Por ejemplo, ¿para que un rectángulo se convierta en un botón? Llevo mucho tiempo queriendo preguntar eso).
 
Реter Konow:
Los que conocen la clase CCanvas, ¿podrían decirme si es posible crear un gradiente allí? Por ejemplo, ¿para que un rectángulo se convierta en un botón? Llevo mucho tiempo queriendo preguntar eso).
Lo hay.
 
Artyom Trishkin:
Compruébalo.

¿Hay algún ejemplo de botones dibujados con Canvas? No recuerdo haber visto ninguno. He visto algunos botones muy chulos, pero basados en imágenes de origen, y no he visto ninguno completamente dibujado en kanvas...
 
Реter Konow:

¿Hay ejemplos de botones dibujados con Kanawas? No recuerdo haber visto ninguno. He visto algunos botones muy chulos, pero se basaban en imágenes de origen, y no he visto ninguno completamente dibujado en kanvas...
Lea la descripción de Anatoly de su biblioteca gráfica: unos elementos informativos, si la memoria no me falla.
 
Artyom Trishkin:
Lea la descripción de Anatoly de su biblioteca de gráficos - sobre elementos de información, si mi memoria no me falla.

Intentaré encontrarlo...
 
Lo encontré. El elemento tooltip utiliza un gradiente. Pero no he entendido si es posible establecer un color y una transparencia diferentes para cada línea de degradado. Tendré que repasar kanvas con calma. Tengo curiosidad...
 
Реter Konow:
Los que conocen la clase CCanvas, ¿podrían decirme si es posible crear un gradiente allí? Por ejemplo, ¿para que un rectángulo se convierta en un botón? Llevo mucho tiempo queriendo preguntar eso).
¡Hola Peter!
No veo ningún problema con el gradiente.
Aquí hay un ejemplo claro y sencillo de un script que recorre todos los colores y dibuja un cuadrado de color cambiante dinámicamente.
Para que funcione, tienes que mover el array m_pixels[] en Canvas.mqh a public
public:
   uint              m_pixels[];               // array of pixels
#include <Canvas\Canvas.mqh>
void OnStart()
  {
   CCanvas Grad;

   color col;
   if(!Grad.CreateBitmapLabel(0,0,"Grad",100,100,256,256,COLOR_FORMAT_XRGB_NOALPHA)) Print("Error creating canvas: ",GetLastError());
   for(int r=0; r<256; r++) // red
     {
      int j=0;
      // заполняем цветной градиентный квадрат
      for(int b=0; b<256; b++) // blue
         for(int g=0; g<256; g++) // green
           {
            col=(color)(((r&0x0000FF)<<16)|((g&0x0000FF)<<8)|(b&0x0000FF)); // формируем цвет RGB
            Grad.m_pixels[j]=col; // рисуем точку с текущим цветом
            j++;
           }
      Grad.Update();
      Sleep(20);  // Подождем для плавности
     }
  }
Archivos adjuntos:
Gradient.mq5  2 kb
 
Nikolai Semko:
¡Hola Peter!
No veo ningún problema con el gradiente.
Este es un ejemplo sencillo de un script que recorre todos los colores y dibuja un cuadrado de color degradado.
Para que funcione, tienes que mover el array m_pixels[] en Canvas.mqh a public


¡Hola Nikolai!

Gracias por el ejemplo, pero no me refería a eso. No he dejado claro mi punto de vista. Me refiero al marco del cuadrado, que convertirá el cuadrado en un botón. Para ello, las líneas del marco deben ser diferentes. Por ejemplo, si las líneas superior e izquierda son claras y las líneas inferior y derecha son oscuras, el botón está puls ado, si es al revés, el botón parecerá pulsado. Quería saber cómo se puede hacer con kanvas.

El gradiente llamado las líneas del marco. Tal vez esto esté mal...

 
Реter Konow:

¡Hola Nikolai!

Gracias por el ejemplo, pero no me refería a eso. No he dejado claro mi punto de vista. Me refiero al marco del cuadrado, que convertirá el cuadrado en un botón. Para ello, las líneas del marco deben ser diferentes. Por ejemplo, si las líneas superior e izquierda son claras y las líneas inferior y derecha son oscuras, el botón está puls ado, si es al revés, el botón parecerá pulsado. Quería saber cómo se puede hacer con kanvas.

El gradiente llamado las líneas del marco. Tal vez esto esté mal...


La imagen del botón puede formarse cargando una imagen bmp ya preparada o utilizando el dibujo por software (hay muchas variantes). Y luego simplemente procesando los eventos del ratón en OnChartEvent cambiar su imagen.