La toile est cool ! - page 2

 
fxsaber:

CCanvas est une enveloppe pour ResourceCreate. Ainsi, par exemple, si vous disposez de 20 images prêtes à l'emploi sous forme de tableaux. Si vous voulez les modifier par le biais du canevas, vous devrez faire un coûteux ArrayCopy+Update.

Et si vous le faites sans CCanvas, vous n'aurez besoin que de ResourceCreate+ChartRerdraw. J'ai posté plusieurs travaux de dessin dynamique dans kodobase. Il était évident que CCanvas n'était pas bon.

Je suis d'accord pour dire que c'est un emballage de ressources. Nous devons nous mettre d'accord sur des définitions. Canvas, tel que je le comprends, n'est pas une classe CCanvas, mais une ressource graphique rectangulaire, c'est-à-dire un tableau de points. Ce dont j'ai besoin de la classe CCanvas, c'est de quelques fonctions pour créer, mettre à jour et supprimer. C'est implémenté de manière assez intelligente, je considère les autres fonctions comme inutiles à cause de l'implémentation en pixels (non lissés). En outre, je m'intéresse aux kanvas en tant que graphiques vectoriels, et non en tant que bitmap, c'est-à-dire lorsque je forme l'image moi-même, plutôt que de télécharger des images. Par conséquent, je ne vois aucune utilité pratique à une vingtaine d'images prêtes à l'emploi et je préfère ne pas développer un lecteur vidéo avec MT5. Le but des graphiques vectoriels est de rendre une image en moins de 30 (ou, mieux, moins de 10) millisecondes. De toute façon, l'œil humain ne verra pas l'image changer plus de 30 fois par seconde. En principe, kanvas dans MT5 s'acquitte bien de cette tâche. Il est vrai que ces tourbillons de couleurs sont à la limite (c'est-à-dire qu'une image est formée d'environ 30 millisecondes sur mon ordinateur portable moyen), mais sur MT4, il y a déjà un ralentissement.

Je suis en train de faire une classe CCanvasPro quand le temps le permet, dans laquelle je veux améliorer un peu les choses.
Voici ce que j'ai obtenu jusqu'à présent avec les cercles (lissés avec des ombres). Désolé, je n'ai pas encore ouvert le code. En raison d'un manque de temps.

Il s'agit également d'un script.

Dossiers :
 
Evgeniy Zhdan:
Superbe diagramme arc-en-ciel ! J'aimerais aussi faire danser les bougies en musique et les faire tourner entre elles !

Cela augmentera-t-il les bénéfices ?) Un bonus pour chaque danse, alors je suis partant.)))

 
Nikolai Semko:

Bien sûr, cela aidera, mais le freinage sera terrible.

Il y aura un léger ralentissement, mais pas de freinage brutal. Au moins visuellement, rien n'a changé.


 
Rashid Umarov:

Il y aura un léger ralentissement, mais pas de freinage brutal. Au moins visuellement, rien n'a changé.


Bien sûr, j'ai été un peu dur. Mais tout de même, il sera environ 10% plus lent que les performances globales.

 
Rashid Umarov:

Il y aura un léger ralentissement, mais pas de freinage brutal. Au moins visuellement, rien n'a changé.


Vérifié non pas sur le profilage, mais avecGetMicrosecondCount

Il s'est avéré un ralentissement de 3-4% à 1000 images. En principe, oui, pas très critique.

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:

Je me suis fixé une tâche : démontrer les capacités des graphiques personnalisés via la classe CCanvas dans un code court.

Voici ce qui en est ressorti.

Ce script fonctionne à la fois dans MQL5 et MQL4. Mais il est beaucoup plus rapide sur MT5.

Chaque image est unique et ne se répète pas, c'est-à-dire que le script n'est pas cyclique.


Vous devez déplacer le tableau m_pixels[] de protected : à public dans Canvas.mqh avant de compiler :

une demi-heure à regarder, à attendre que cette chose décolle ;))

 
Alexey Volchanskiy:

une demi-heure d'observation, à attendre que ce truc décolle ;))

:))
 

Franchement, je ne vois pas où est le problème.

Eh bien, oui, belle, colorée, iridescente... Mais comment cela affectera-t-il le travail de l'expert ?

Je comprendrais, si nous étions ici pour écrire le jeu - c'est là qu'une telle opportunité oh, combien exigée serait.... Mais ici...

À mon avis, il faut faire exactement le contraire - se débarrasser de toutes les actions inutiles, afin que le code résultant charge le système le moins possible (ce qui nécessiterait de l'argent dans le nuage). Et il doit aussi être plus facile à entretenir.

A moins que - "wow-effect" pour les clients... Je pense que c'est vrai, une sortie bien conçue vous permet de gagner plus d'argent en Freelance...

 
Très cool, merci, maintenant le commerce sera beaucoup plus brillant, littéralement.
 
George Merts:

Franchement, je ne vois pas où est le problème.

Eh bien, oui, belle, colorée, iridescente... Mais comment cela affectera-t-il le travail de l'expert ?

Je comprendrais, si nous étions ici pour écrire le jeu - c'est là qu'une telle opportunité oh, combien exigée serait.... Mais ici...

À mon avis, il faut faire exactement le contraire - se débarrasser de toutes les actions inutiles, afin que le code résultant charge le système le moins possible (ce qui nécessiterait de l'argent dans le nuage). Et il doit aussi être plus facile à entretenir.

A moins que - "wow-effect" pour les clients... Je pense que c'est vrai, une sortie bien conçue vous permet de gagner plus d'argent en Freelance...

Ça pourrait être utile pour les indicateurs. Il y avait différents indicateurs fléchés dessinés ici sur le Canvas, il y avait même un article.