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
J'ai presque terminé l'exemple de la classe GButton, mais je dois m'absenter. Je le terminerai demain et le présenterai.
Super. Très intéressant. )
Voici ce que vous obtenez.
Le bouton peut être affiché en arrière-plan ou au premier plan, avec ou sans fonction de verrouillage.
Dans le fichier d'exemple CanvasButton.mq5, il est possible de faire glisser le bouton avec la souris. Pour ce faire, il suffit d'appuyer sur Ctrl pour déplacer le bouton bleu, et sur Shift pour déplacer le bouton rouge.
Comme la classe GButton est un descendant de la classe CCanvas, l'exemple démontre la possibilité d'utiliser les fonctions de la classe CCanvas sur l'exemple CircleWu (Ceci est implémenté dans OnInit). Il est donc possible d'écrire du texte sur le bouton en utilisant les fonctions de la classe CCanvas.
Cette classe, bien sûr, ne prétend pas être propre. Les graphismes ne brillent pas par leur perfection et la 3D est très conventionnelle ; les ombres ne sont pas implémentées, la vitesse d'exécution n'est pas optimisée. Et il est fort probable qu'il y ait beaucoup d'aspérités et l'absence de divers contrôles. Ne jugez donc pas sévèrement.
Si vous y consacrez un peu plus de temps, c'est bien sûr possible :
J'essayais juste de... on pourrait dire - définir la direction.
Le fichier Canvas.mqh ne diffère du fichier original que par le fait que le tableau m_pixels est défini comme public.
Voici ce que nous avons obtenu.
Le bouton peut être affiché en arrière-plan ou au premier plan et peut être cliqué ou non.
Dans le fichier d'exemple CanvasButton.mq5, il est possible de faire glisser le bouton avec la souris. Pour ce faire, il suffit de maintenir la touche Ctrl enfoncée pour déplacer le bouton bleu, et la touche Shift pour déplacer le bouton rouge.
Comme la classe GButton est un descendant de la classe CCanvas, l'exemple démontre la possibilité d'utiliser les fonctions de la classe CCanvas sur l'exemple CircleWu (Ceci est implémenté dans OnInit). Il est donc possible d'écrire du texte sur le bouton en utilisant les fonctions de la classe CCanvas.
Cette classe, bien sûr, ne prétend pas être propre. Les graphismes ne brillent pas par leur perfection et la 3D est très conventionnelle ; les ombres ne sont pas implémentées, la vitesse d'exécution n'est pas optimisée. Et il est fort probable qu'il y ait beaucoup d'aspérités et l'absence de divers contrôles. Ne jugez donc pas trop sévèrement.
Si vous passez un peu plus de temps, bien sûr, vous pouvez le faire :
J'essayais juste de... on pourrait dire - définir la direction.
Le fichier Canvas.mqh ne diffère du fichier original que par le fait que le tableau m_pixels est défini comme public.
Nikolay, à mon avis, ça s'est plutôt bien passé. Nous avons pris un bon départ et nous pouvons aller plus loin. J'appellerais ce type de bouton une clé. Si vous avez 4 lignes de cadre claires : - en haut, à gauche clair et à droite, le bas - foncé pour l'état pressé et vice versa, ce sera encore mieux (il suffit d'ajouter un fond clair, sinon les lignes sombres sur un graphique à fond noir ne seront pas visibles). Et ensuite, vous pouvez définir le texte et l'image.
Bref, bien essayé. )
. Si vous divisez les 4 lignes claires du cadre le long des bords : en haut, à gauche clair et à droite, en bas foncé pour l'état pressé et vice versa pour l'état pressé, ce sera encore mieux (il faut juste ajouter un fond clair, sinon les lignes sombres ne seront pas visibles sur le graphique noir).
Oui, il est clair que vous pouvez dessiner comme vous le souhaitez. Dans ce cas, je ne me suis pas fixé comme objectif de réaliser un chef-d'œuvre. Mais la première chose que je voudrais améliorer, c'est de générer tous les tableaux de l'image du bouton (deux tableaux dans ce cas) et ensuite de les copier uniquement par ArrayCopy, de sorte que nous ne devons pas créer une image à chaque fois. Cela réduira considérablement le travail, mais au prix d'une consommation supplémentaire de RAM, mais comme il est maintenant courant sur les ordinateurs de 16 Go de RAM, et s'il y a même beaucoup de boutons, la consommation de mémoire supplémentaire ne dépassera probablement pas 1 à 2 Mo, surtout si les mêmes boutons utilisent les mêmes tableaux. Donc, je ne pense pas que ce soit un problème. L'essentiel est la vitesse.
Je vois. Lorsque j'ai posé la question sur le bouton, je voulais savoir s'il était possible de faire cela avec un canevas :
Pressé :
Pressé :
Dans cet exemple, chaque côté du cadre est constitué de plusieurs lignes. Il y a un total de 4 lignes de gradient de chaque côté du cadre. Chaque ligne a une teinte différente qui dépend de l'état du bouton et de la forme donnée du cadre. Si CCanvas a la possibilité de définir la couleur de lignes de gradient spécifiques du cadre, il est facile de réaliser l'exemple ci-dessus. C'est exactement ce que je voulais découvrir.
Je vois. Lorsque j'ai posé la question sur le bouton, je voulais savoir s'il était possible de faire cela avec un canevas :
Pressé :
Pressé :
Dans cet exemple, chaque côté du cadre est constitué de plusieurs lignes. Il y a au total 4 lignes de gradient de chaque côté du cadre. Chaque ligne a une teinte différente, qui dépend de l'état du bouton et de la forme donnée du cadre. Si CCanvas a la possibilité de définir la couleur de lignes de gradient spécifiques du cadre, il est facile de réaliser l'exemple ci-dessus. C'est exactement ce que je voulais découvrir.
Je ne te comprends pas, Peter. Vous parlez de viande et je parle de squelette. Si vous avez des os, vous pouvez ajouter de la viande. Mon exemple ne comporte-t-il pas les états Pressed, Pressed ? Avez-vous seulement regardé à l'intérieur de la classe GButton ? Peter, mon conseil : quittez tout et étudiez d'urgence la POO. C'est juste que dans votre projet, vous avez atteint un plafond, qui est appelé code gonflé, il est facilement surmonté avec l'aide de la POO.
))) Alors pourquoi ai-je lancé ce sujet ? ) Je vais étudier la POO maintenant.
Votre exemple comporte des boutons, des événements de clic et les états de ces boutons. Tout va bien. Mais Nikolaï, je ne comprends toujours pas ce que je demandais - y a-t-il une option dans la classe CCcanvas pour définir une couleur spécifique aux lignes de gradient du cadre ? En regardant votre exemple, vous pouvez penser qu'il y a... Si oui, pouvez-vous dessiner quelque chose de similaire à mon exemple ? Je m'intéresse à la facilité et aux possibilités de dessiner en tant que tel en utilisant la fonctionnalité de cette classe, et vous parlez de vitesse et d'améliorations de la fonctionnalité de la classe. C'est un sujet légèrement différent.
))) Alors pourquoi ai-je lancé ce sujet ? ) Je vais étudier la POO maintenant.
Il est préférable de commencer à apprendre la POO avec quelque chose de plus simple que Canvas.
Avez-vous seulement regardé à l'intérieur de la classe GButton ?