Réaliser un projet de crowdsourcing sur Canvas - page 20

 

En comparant ces formules, les résultats sont en effet différents. J'ai également comparé les vitesses.

La moitié gauche est constituée de trois couches de couleurs différentes, avec une transparence de 128 partout. Les couleurs sont mélangées par le terminal.

Celle du haut à droite est faite en une seule couche, mélangée selon le wiki anglais.

En bas à droite en une seule couche, selon le wiki russe.


Comparaison du terminal et du wiki anglais par capture d'écran (terminal du dessus)


Comparaison des formules par les ressources sauvegardées dans le fichier (en anglais à partir du haut)


La création d'une ressource prend beaucoup de temps, par rapport au calcul de la couleur et au remplissage du tableau jusqu'à 10 fois, il est probablement inutile de s'occuper de l'OCL.

PS Cela semble être une bonne idée, vous pouvez photoshoper dans MT bang on :)

Dossiers :
script.mq5  4 kb
 
Ceux qui connaissent la classe CCanvas, pouvez-vous me dire s'il est possible d'y créer un dégradé ? Par exemple, pour un rectangle, le transformer en bouton ? Cela fait longtemps que je voulais poser cette question).
 
Реter Konow:
Ceux qui connaissent la classe CCanvas, pouvez-vous me dire s'il est possible d'y créer un dégradé ? Par exemple, pour un rectangle, le transformer en bouton ? Cela fait longtemps que je voulais poser cette question).
C'est le cas.
 
Artyom Trishkin:
Vérifiez.

Existe-t-il des exemples de boutons dessinés avec Canvas ? Je ne me rappelle pas en avoir vu. J'ai vu des boutons très cool, mais ils étaient basés sur des images sources, et je n'ai pas vu de boutons entièrement dessinés sur toile...
 
Реter Konow:

Existe-t-il des exemples de boutons dessinés avec des Kanawas ? Je ne me rappelle pas en avoir vu. J'ai vu des boutons très sympas, mais ils étaient basés sur des images sources, et je n'ai pas vu de bouton entièrement dessiné sur toile...
Lisez la description qu'Anatoly a faite de sa bibliothèque graphique - environ des éléments d'information, si ma mémoire est bonne.
 
Artyom Trishkin:
Lisez la description qu'Anatoly a faite de sa bibliothèque de graphiques - environ des éléments d'information, si ma mémoire est bonne.

Je vais essayer de le trouver...
 
Je l'ai trouvé. L'élément tooltip utilise un gradient. Mais je n'ai pas compris s'il est possible de définir une couleur et une transparence différentes pour chaque ligne de gradient. Je vais devoir parcourir kanvas à mon aise. Je suis curieux...
 
Реter Konow:
Ceux qui connaissent la classe CCanvas, pouvez-vous me dire s'il est possible d'y créer un dégradé ? Par exemple, pour un rectangle, le transformer en bouton ? Cela fait longtemps que je voulais poser cette question).
Bonjour Peter !
Je ne vois pas de problème avec le gradient.
Voici un exemple simple et clair d'un script qui passe en revue toutes les couleurs et dessine dynamiquement un carré de couleur à gradient variable.
Pour que cela fonctionne, vous devez déplacer le tableau m_pixels[] dans Canvas.mqh vers le 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);  // Подождем для плавности
     }
  }
Dossiers :
Gradient.mq5  2 kb
 
Nikolai Semko:
Bonjour Peter !
Je ne vois pas de problème avec le gradient.
Voici un exemple simple d'un script qui passe en revue toutes les couleurs et dessine un carré coloré en dégradé.
Pour que cela fonctionne, vous devez déplacer le tableau m_pixels[] dans Canvas.mqh vers le public.


Salut Nikolaï !

Merci pour l'exemple, mais ce n'est pas ce que je voulais dire. Je n'ai pas été assez clair. Je voulais dire le cadre du carré, qui transformera le carré en bouton. Pour cela, les lignes du cadre doivent être différentes. Par exemple, si les lignes supérieure et gauche sont claires et les lignes inférieure et droite sont foncées, le bouton est enfoncé, si c'est l'inverse, le bouton aura l'air enfoncé. Je voulais savoir comment on peut le faire avec Kanvas.

Le gradient a appelé les lignes du cadre. Peut-être que c'est faux...

 
Реter Konow:

Salut Nikolaï !

Merci pour l'exemple, mais ce n'est pas ce que je voulais dire. Je n'ai pas été assez clair. Je voulais dire le cadre du carré, qui transformera le carré en bouton. Pour cela, les lignes du cadre doivent être différentes. Par exemple, si les lignes supérieure et gauche sont claires et les lignes inférieure et droite sont foncées, le bouton est enfoncé, si c'est l'inverse, le bouton aura l'air enfoncé. Je voulais savoir comment on peut le faire avec Kanvas.

Le gradient a appelé les lignes du cadre. Peut-être que c'est faux...


L'image du bouton peut être formée soit en chargeant une image bmp prête à l'emploi, soit en utilisant un logiciel de dessin (il existe de nombreuses variantes). Et ensuite, simplement en traitant les événements de souris dans OnChartEvent, changer son image.