Fare un progetto in crowdsourcing su Canvas - pagina 20

 

Confrontando queste formule, i risultati sono davvero diversi. Ho anche confrontato le velocità.

La metà sinistra è composta da tre diversi strati di colore, con 128 di trasparenza ovunque. I colori sono mescolati dal terminale.

Quello in alto a destra è fatto in un solo strato, mescolato secondo la wiki inglese.

In basso a destra in uno strato, secondo la wiki russa.


Confronto tra il terminale e il wiki inglese tramite screenshot (terminale dall'alto)


Confrontare le formule per risorse salvate in un file (inglese da sopra)


Ci vuole molto tempo per creare una risorsa, rispetto a calcolare il colore e riempire l'array fino a 10 volte, probabilmente non ha senso trattare con OCL.

PS Sembra una buona idea, si può photoshop in MT bang on :)

File:
script.mq5  4 kb
 
Chi conosce la classe CCanvas, può dirmi se è possibile creare un gradiente lì? Per esempio, per un rettangolo per trasformarlo in un pulsante? Era da molto tempo che volevo chiederlo).
 
Реter Konow:
Chi conosce la classe CCanvas, può dirmi se è possibile creare un gradiente lì? Per esempio, per un rettangolo per trasformarlo in un pulsante? Era da molto tempo che volevo chiederlo).
C'è.
 
Artyom Trishkin:
Controllare.

Ci sono esempi di pulsanti disegnati con Canvas? Non ricordo di averne visti. Ho visto alcuni pulsanti molto belli, ma erano basati su immagini di origine, e non ne ho visti di completamente disegnati su tela...
 
Реter Konow:

Ci sono esempi di bottoni disegnati con Kanawas? Non ricordo di averne visti. Ho visto alcuni pulsanti molto belli, ma erano basati su immagini di origine, e non ne ho visto uno disegnato completamente su tela...
Leggete la descrizione di Anatoly della sua libreria grafica - circa elementi informativi, se la memoria non mi inganna.
 
Artyom Trishkin:
Leggete la descrizione di Anatoly della sua libreria di grafici - circa elementi di informazione, se la memoria non mi inganna.

Cercherò di trovarlo...
 
Trovato. L'elemento tooltip usa un gradiente. Ma non ho capito se è possibile impostare un colore e una trasparenza diversi per ogni linea di sfumatura. Dovrò esaminare Kanvas a mio piacimento. Sono curioso...
 
Реter Konow:
Chi conosce la classe CCanvas, può dirmi se è possibile creare un gradiente lì? Per esempio, per un rettangolo per trasformarlo in un pulsante? Era da molto tempo che volevo chiederlo).
Ciao Peter!
Non vedo alcun problema con il gradiente.
Ecco un semplice e chiaro esempio di uno script che passa attraverso tutti i colori e disegna dinamicamente un quadrato colorato a gradiente che cambia.
Affinché funzioni, è necessario spostare l'array m_pixels[] in Canvas.mqh al pubblico
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);  // Подождем для плавности
     }
  }
File:
Gradient.mq5  2 kb
 
Nikolai Semko:
Ciao Peter!
Non vedo alcun problema con il gradiente.
Ecco un semplice esempio di uno script che passa attraverso tutti i colori e disegna un quadrato colorato a gradiente.
Affinché funzioni, è necessario spostare l'array m_pixels[] in Canvas.mqh al pubblico


Ciao Nikolai!

Grazie per l'esempio, ma non è quello che intendevo. Non mi sono espresso chiaramente. Intendevo la cornice del quadrato, che trasformerà il quadrato in un pulsante. Per questo, le linee della cornice devono essere diverse. Per esempio, se le linee superiore e sinistra sono chiare e le linee inferiore e destra sono scure, il pulsante è premuto, se è viceversa, il pulsante sembrerà premuto. Volevo sapere come si può fare con kanvas.

Il gradiente chiamato linee della cornice. Forse questo è sbagliato...

 
Реter Konow:

Ciao Nikolai!

Grazie per l'esempio, ma non è quello che intendevo. Non mi sono espresso chiaramente. Intendevo la cornice del quadrato, che trasformerà il quadrato in un pulsante. Per questo, le linee della cornice devono essere diverse. Per esempio, se le linee superiore e sinistra sono chiare e le linee inferiore e destra sono scure, il pulsante è premuto, se è viceversa, il pulsante sembrerà premuto. Volevo sapere come si può fare con kanvas.

Il gradiente chiamato linee della cornice. Forse questo è sbagliato...


L'immagine del pulsante può essere formata sia caricando un'immagine bmp pronta, sia usando un software di disegno (ci sono molte varianti). E poi semplicemente elaborando gli eventi del mouse in OnChartEvent cambiare la sua immagine.