Les AlphaMobileControls, c’est un projet CodePlex qui a un certain âge mais qui a le mérite d’amener la gestion de la transparence dans le Compact Framework, ce qui peut être sympa pour avoir de plus jolies interfaces.

Le fait est que si ces contrôles sont bien faits, il y a quelques trucs non documentés, et ce post est destiné à vous faire partager ceux que j’ai pu trouver: c’est pas bien long, mais il m’a fallut un peu de temps pour comprendre :)

Disclaimer: ce post enfonce peut-être des portes ouvertes pour les experts du GDI, mais je n’en suis pas un!

Les AlphaMobileControls regroupent plusieurs types de contrôles:

  • AlphaMobileImage
  • AlphaMobileImageButton
  • AlphaMobileLabel
  • AlphaMobileForm

Je ne me suis intéressé qu’aux deux premiers, et au dernier, celui ci étant nécessaire au bon fonctionnement de l’application.

AlphaImageButton

Au départ, je voulais juste des boutons qui gèrent la transparence, et avec des coins ronds. La première chose à savoir est qu’on ne peut pas intégrer un bouton tout seul. Pour que le bouton marche bien il faut également transformer son formulaire de base en AlphaMobileForm.

Ensuite, l’apparence du bouton est géré avec des images: personnellement j’utilise des PNG (pour le support de la transparence justement). On peut définir 3 différents états pour le bouton: Normal, Active (quand on clique dessus) et Disabled (désactivé). Pour chacun de ces états, on peut définir une image différente. En revanche il faut faire attention à la façon dont on inclus les ressources: il ne faut pas oublier, après les avoir ajoutées les images dans les ressources du projet, de choisir dans les propriétés de chacune de ces ressources “Embedded Ressource” dans le champ “Build Action”. Si à l’exécution vous tombez sur une exception pour une référence null dans la méthode CreateFromStream de la class AlphaImage, c’est que vous avez oublié cette étape!

J’imagine qu’il existe le même genre de caveats pour l’AlphaMobileLabel

AlphaImage

L’AlphaImage ne dérive pas d’une PictureBox. Ni même d’une Image ou d’un Bitmap. Elle possède sa propre méthode Draw, et une chose à savoir, c’est qu’il n’est pas possible de récupérer les évènements, comme Click, sur ce contrôle. Si vous voulez une image qui réagit quand on clique dessus, prenez l’AlphaImageButton!

Vous voilà un peu mieux armé que moi il y a quelques heures, alors à vos Visual Studio!