Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Dans la classe CGraphic, j'ai remplacé le type de couleur par uint à tous les endroits, comme vous l'avez demandé.
J'ai également ajouté de nouvelles méthodes à la classe CCanvas, qui permettent de dessiner des primitives avec une épaisseur spécifiée :
Dans la lignée de l'innovation de CCanvas, j'ai étendu les propriétés de CCurve :
Lorsque vous dessinez une courbe avec des lignes, vous pouvez désormais spécifier l'épaisseur des lignes et le style de ses extrémités.
C'est juste génial.
La gestion des splines (interpolation avec des courbes de Bézier) a été revue. Son implémentation a été déplacée de la classe CGraphics directement dans CCanvas, ce qui permet de construire des splines en dehors de la bibliothèque Graphics.
En outre, un algorithme de rendu de spline fermé a été ajouté.
En conséquence, la classe CCanvas dispose désormais de deux nouvelles méthodes publiques.
Ces méthodes permettent de dessiner des splines dans un style donné et avec une épaisseur donnée.
Puisque les courbes de Bézier décrivent les cercles et les ellipses de manière assez précise, il n'est pas nécessaire d'ajouter à la classe CCanvas de nouvelles méthodes pour rendre ces primitives avec une épaisseur donnée.
Exemple d'approximation d'une ellipse par des courbes de Bézier basée sur la méthode PolygoneSmooth :
Résultat :
Une autre étape possible vers la polyvalence de la bibliothèque graphique : un mode de dessin de courbes personnalisées CURVE_CUSTOM.
Ce mode élimine le besoin d'hériter de la classe CGraphic et de surcharger les méthodes ...Plot afin de dessiner une courbe différemment de ce que les outils standard de la bibliothèque permettent.
Pour implémenter ce mode CURVE_CUSTOM, de nouvelles propriétés seront ajoutées à la classe CCurve.
Il est basé sur un nouveau pointeur vers la fonction PlotFucntion.
Cette approche ouvre de nouvelles possibilités pour le dessin de parcelles.
Implémentons le dessin des chandeliers dans la bibliothèque CGraphics à titre d'exemple :
1. Créons une classe conteneur dans laquelle toutes les données d'une seule bougie seront stockées.
Comme la classe CCandle est un descendant de la classe CObject, tous les chandeliers que nous voulons dessiner, nous pouvons les écrire séquentiellement dans l'objet de la classe CArrayObj. Ce tableau sera intégré à notre méthode de dessin personnalisée en tant que paramètre cbdata. Par conséquent, la méthode de dessin des chandeliers se présentera comme suit.
3. Pour des raisons de simplicité, tous les chandeliers seront générés de manière aléatoire. Nous générons donc séquentiellement 10 chandeliers et remplissons l'objet de classe CArrayObj avec ceux-ci. Ensuite, nous créons un objet CGraphics et y ajoutons une courbe, tout en spécifiant qu'elle sera dessinée à l'aide de notre fonction PlotCandles. Nous devons également modifier les valeurs maximale et minimale de l'axe des ordonnées, afin que nos bougies soient entièrement visibles.
En conséquence, nous obtenons le graphique suivant :
@Roman Konopelko
il y a une petite erreur dans la fonction CGraphic::SetDefaultParameters
Les couleurs doivent être initialisées en tenant compte de l'opacité.
@Roman Konopelko
il y a une petite erreur dans la fonction CGraphic::SetDefaultParameters
Les couleurs doivent être initialisées en tenant compte de l'opacité.
Cet exemple a provoqué le blocage de l'ordinateur. Ce que j'ai fait : après avoir placé l'indicateur sur le graphique dans l'éditeur, j'ai joué avec différentes combinaisons de commentaires/décommentations des lignes 87 et 88 (une à la fois, ensemble).
Répétez l'exploit deux fois. Je n'ai pas enregistré la séquence des actions. La troisième fois est insignifiante, j'ai peur de vérifier.
Ajouté : build 1607 x64
Cet exemple a provoqué le blocage de l'ordinateur. Ce que j'ai fait : après avoir placé l'indicateur sur le graphique dans l'éditeur, j'ai joué avec différentes combinaisons de commentaires/décommentations des lignes 87 et 88 (une à la fois, ensemble).
Répétez l'exploit deux fois. Je n'ai pas enregistré la séquence des actions. La troisième fois est insignifiante, j'ai peur de vérifier.
Ajouté : build 1607 x64
J'ai répété l'enregistrement aujourd'hui - l'ordinateur s'est arrêté de fonctionner, et j'ai réussi à voir la consommation de RAM passer de 2 à 5,5 Go. Il semble avoir réussi à fermer le programme, mais l'ordinateur se bloque depuis cinq minutes.
Cette fois, j'ai fixé une limite à la taille du tableau - pas plus de 300 éléments. Comme vous pouvez le voir, ça n'a pas aidé 🤔
Que dit le débogage ?
Que dit le débogage ?
Jbug ne l'a pas compris, j'ai fait ceci : j'ai survolé un indicateur et décommenté/commenté une ou deux lignes et j'ai compilé. J'ai fini par écrire depuis une tablette, l'ordinateur portable est tombé en panne...
Le gbug ne l'a pas fait, j'ai fait ceci : j'ai survolé l'indicateur et commenté/commenté une ou deux lignes et j'ai compilé. J'ai fini par écrire depuis une tablette, l'ordinateur portable est tombé en panne...
Ainsi, après un redémarrage brutal, l'ordinateur portable est revenu à la vie, mais je ne veux pas mener d'autres expériences destructives - il y a plusieurs conseillers experts en cours d'exécution sur l'ordinateur portable, donc il n'y a aucune envie d'attraper un gel pendant une heure entière.