Attention, concours ! - page 13

 

Oups )

Je suis d'accord avec l'option derebane et une discussion publique serait des plus utiles.

 
TheXpert:
Oui, c'est un problème. Ce sujet fait appel à komposter et tol64.

Merci. Je n'ai pas participé au concours car je travaille actuellement sur un très gros projet. Il sera bientôt disponible pour tous. Il y aura beaucoup de choses à discuter et il sera peut-être possible d'organiser divers concours sur cette base également. Je ne peux pas encore donner plus de détails. )

 
Eh bien, nous y voilà :)
Класс для работы с кнопками произвольной формы
Класс для работы с кнопками произвольной формы
  • 2015.03.18
  • Dmitriy Parfenovich
  • www.mql5.com
Класс предназначен для создания интерактивных кнопок на графике цены с различными состояниями.
 
fyords:
Nous y voilà :)

Le mien est toujours en cours de test... Je vous le dirai quand je le verrai...

Ajouté :

Voici mon option:)

 
fyords:

J'ai vérifié - 5 points :) Si l'utilisateur n'a pas besoin de la bibliothèque standard, votre version est meilleure.

En fait, je m'intéresse à cette bibliothèque parce que j'ai un programme sur lequel je travaille actuellement, écrit sur sa base. Le design est très maladroit, je voulais l'améliorer. Et là, je viens de recevoir un concours, qui me concerne tout à fait.

Des avantages de votre mise en œuvre:

1)Il n'y a pas de béquilles. Je l'ai et l'héritage des classes standard et autres plaisirs pour supporter la compatibilité avec la bibliothèque standard.

2) L'état du bouton et l'état de l'objet sur le graphique coïncident.

3)Les fonctions ont une valeur d'entrée qui vérifie les erreurs. J'ai, à certains endroits, négligé ce...

4)Les boutons sont créés de manière plus élégante dans Expert Advisor (grâce à un cycle imbriqué). Je n'y ai pas pensé.

5)Vous pouvez définir non seulement l'angle du graphique, mais aussi l'angle du bouton. Honnêtement - je ne sais pas où cela peut être utile :) mais peut-être...

6) J'ai6 photos. J'en ai 4.

7)CCanvas - vous pouvez écrire quelque chose sur le bouton, ajouter quelques fonctions et c'est tout.C'est très pratique dans le cas d'applications multilingues. Je devrais refaire des béquilles.

8)Votre code est beaucoup plus rapide à comprendre.

J'ai remarqué quelques améliorations :

1)Si vous réduisez le chat de manière à ce que le bouton soit partiellement caché (en bas ou en haut) - le rétroéclairage du bouton n'est pas réinitialisé (voir image) .

2)Je n'ai pas vu d'option permettant de créer un "bouton anti-adhérent". C'est-à-dire un bouton qui s'est enfoncé et qui est immédiatement tombé (comme les boutons standard).

3)Vous avez une façon beaucoup plus compliquée de définir la transparence. Je ne comprends même pas comment ça marche partout. Si vous préparez vous-même les images, il est plus facile de faire comme je l'ai fait. Jeprends simplement la transparence de l'image avec la fonction (grâce à Integer ) :

double GetAlfa(uint  aColor)
  {
   return((aColor>>24)&0xff);
  }

Et ensuite je le vérifie avec le niveau de seuil (j'ai pris 250, mais bien sûr je dois ajouter une fonction, pour pouvoir le régler) :

 double alfa=GetAlfa(data[y*m_SizeX+x]);
 if(alfa>250)
   {
    m_T[y*m_SizeX+x]=true;
   }
 else
   {
   m_T[y*m_SizeX+x]=false;
   }

Toutefois, si vous travaillez avec des images prêtes à l'emploi sans ouvrir d'éditeur graphique, votre version sera probablement plus pratique.

ZS : Je viens de remarquer que la classe CCanvas possède également une fonction de définition de la transparence :

#define  GETRGBA(clr)   uchar((clr)>>24)
 

Merci. Je vais jeter un coup d'oeil au tien.

MigVRN:

Ce que j'ai remarqué et qui pourrait être amélioré : ...

  1. Si le pointeur sort de la fenêtre, l'événement "déplacer la souris" n'est pas généré, et il semble donc impossible de corriger ce bogue.
  2. La tâche n'en avait pas, bien que cela ne demande pas beaucoup d'efforts pour le réparer.
  3. Avec la transparence, il me semble que tout est plus simple : prenez 2 points (le plus sombre et le plus clair), la valeur moyenne sera un seuil. S'il y a des zones transparentes dans l'image, la couleur la plus sombre se déplacera vers 0. Par conséquent, la valeur seuil le sera également.
    Cette décision a été prise parce que la même fonction fonctionne à la fois avec la transparence et un masque séparé.
    Je tiens également à mentionner que cette méthode (masque séparé) vous permet d'utiliser des images sans transparence. Peut-être que le développeur n'est pas doué pour les éditeurs graphiques :)
    Ou, variante avec spécification de la couleur du masque - comme la variante consistant à spécifier une couleur blanche pour le bouton vert et il "deviendra transparent", sans danse supplémentaire autour de la transparence et des masques supplémentaires.
 
MigVRN:

J'ai fait un travail pour vous là... J'attends la réponse.

Merci aux participants.

 
TheXpert #:
Oui. La zone du bouton dans l'image est une zone opaque.