IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Probleme de bouton transparent


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Par défaut Probleme de bouton transparent
    Bonjour

    J'essaye de faire une application avec un skin perso en C# .Net sous Windows XP. Et je rencontre deux problèmes.
    J'ai une form avec une backgroundImage en bmp qui a comme couleur transparente le Fushia. Jusque la en utilisant la transparencyKey j'arrive à avoir mon image et les parties voulues transparentes.

    Mais après je mets des boutons qui appartiennent à cette forme et qui ont eux aussi la couleur Fushia à rendre transparente.
    Le problème c'est que la transparence sur les boutons rend tout ce qui peut y avoir en dessous transparent que ce soit un autre bouton ou l'image de fond de ma forme. Seul la BackColor de la forme arrive à rester si je la donne manuellement.
    Tous mes boutons et les propriétés de la formes sont défini dans un fichier xml donc je les crée a la main et pas avec le designer
    J'ai un peut tout essayer et rien y fait.

    Je n’ai pas trouvé non plus comment gérer le z order des boutons autrement que par l'ordre de création. Ce qui me pause un problème quand je souhaite afficher une gif animé par dessus le tout. La gif se retrouve entre la form et les boutons.

    Merci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    J'vais peut-etre dire des betises mais la transparence est gérée de façon tres "succinte" au niveau des propriétés de base du framework.

    J'entends par la que la "superposition" de controle n'est pas prise en compte
    par la transparence...

    ainsi, si tu pose 2 pictureBox à cheval l'une sur l'autre et que tu appliques à chacune de ces pictureBox des images avec transparence, et beh, le rendu
    n'en tiendra pas compte au niveau des zones communes...

    En gros, mets une image representant un cercle exterieur au dessus du image avec un cercle "interieur" (les transparences etant bien defini) et beh, tu n'auras pas les deux cercles visibles....

    Pour pouvoir gérer la transparence au niveau de la superposition d'image (par exemple), il faut que toutes les images appartiennent à un UNIQUE controle qui s'occupera de les dessiner....

    En clair, la transparence n'est pas "répercutée" d'un controle à l'autre et c'est vraiment dommage

    Pour faire ton projet orienté Skin C#, déja, je crois qu'il y a des exemples sur CodeProject.com (en C++ ou en C# même).. et à mon avis, une approche possible serait d'avoir des controles qui gère bien cela... et par dessus, avoir un composant type ControleManager (genre un panel un peu) qui s'occupe du faire la colle coté transparence entre "chaque controle".. bref, l'idée serait que les controles ne font pas le Paint() mais par contre, possède une methode GetPaint() (nom choisi au hasard) qui retourne l'image du controle dessiné par celui ci.. Et qu'au niveau du panelManager, ce soit lui qui fasse tous les rendus...

    En gros, Un seul OnPaint() au niveau du panelManager qui se "contente" de faire des DrawImages() avec pour image à dessiner les images générées par chaque controle... L'idée étant de centralisé le Paint dans 1 seul controle et donc de manipuler une notion de Z-Order plus facilement egalement

    Je ne suis pas sur de cette approche mais elle me semble viable quand meme...

    C'était un peu long comme explication, j'espère que je n'aurais pas été trop confus ni que je me serais trop eparpillé dans mes élucubrations.. (pour info, je ne prenomme pas antoine )

    The Monz, Toulouse

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Par défaut
    Merci beaucoup de tes remarques.
    C'est un peut ce que je pensais mais je préférais en être sur avant de créer un system de région comme j'ai pu le voir sur une ou deux appli d'exemple. Ca a l'air un peut lourd a faire et j'espérais trouver une solution plus simple.
    Ca aura aussi l'avantage de ne pas gérer les cliques des boutons sur les zones transparentes.
    Mais si quelqu’un a une autre solution ou un code source d’un bon manager de bouton avec région ca m’intéresse.

Discussions similaires

  1. [C#]Problème sur composant perso (Bouton Transparent)
    Par SLE dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/10/2005, 00h12
  2. [Struts]probleme de bouton
    Par stanilas dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/08/2005, 22h29
  3. [C#] problème de bouton transparent
    Par mbibim63 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/05/2005, 14h50
  4. Probleme avec la transparence
    Par CookSlash dans le forum OpenGL
    Réponses: 12
    Dernier message: 15/01/2004, 22h35
  5. bouton transparent
    Par Michaël dans le forum Flash
    Réponses: 2
    Dernier message: 25/07/2003, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo