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

wxWidgets Discussion :

Boutons à fond transparent avec wxWidgets


Sujet :

wxWidgets

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 5
    Points
    5
    Par défaut Boutons à fond transparent avec wxWidgets
    Bonjour à tous,
    Je mets ce post mais peut être y avez vous déjà répondu (en tout cas j'ai pas trouvé de réponse sur ce sujet).
    Mon problème est le suivant:
    je veux créer des boutons cliquable (wxBitmapButton) ayant une image avec un fond transparent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Bouton "Historique"
    	wxImage* hist = new wxImage ();
    	hist->AddHandler(new wxPNGHandler);
    	hist->LoadFile(wxT("./Images/historique.png"), wxBITMAP_TYPE_PNG);
    	wxBitmap* history = new wxBitmap (*hist);
    	historique = new wxBitmapButton( this, ID_HISTORIQUE, *history, wxPoint(400,200),wxSize(165,94));
    Les images que j'utilise possède effectivement des fonds transparents (ce sont des .png, .tga, .bmp). Cependant mes boutons apparaissent sous un fond blanc.
    J'ai bien essayé de créer une nouvelle classe "Bouton" héritant des wxBitmapButton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Bouton : public wxBitmapButton
    et dans laquelle j'ai mis une fonction une fonction OnPaint(...).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void Bouton::OnPaint(wxPaintEvent& evt)
    {
        wxPaintDC MonDc(this);
     
    	wxImage* fond = new wxImage ();
    	fond->AddHandler(new wxPNGHandler);
    	fond->LoadFile("./Images/historique.png", wxBITMAP_TYPE_PNG);
    	wxBitmap* bitmap = new wxBitmap (*fond);
     
    	MonDc.DrawBitmap(*bitmap, 0, 0);
     
     }
    ...
    //Création du bouton
    Bouton* bouton = new Bouton(this,ID_HISTORIQUE,*history,wxPoint(400,200),wxSize(165,94));
    Rien à faire, mes boutons ont toujours ce fameux fond blanc.
    Donc si vous avez déjà rencontré ce problème, tout conseil, bout de code etc... sera le bien venu. Merci d'avance.
    Je programme en C++ avec Visual Studio 2005 sous windows XP.

  2. #2
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Salut mr_mimyl,
    Je pense que la 1ère étape serait deja d'afficher un png sans l'associer à un bouton jete un oeil sur la classe wxMemoryDC et au sample fourni avec la librairie wxWidgets -> png, cela t'aidera !
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Salut Jérémy,
    Tout d'abord, merci pour ton aide.
    Je pense que la 1ère étape serait deja d'afficher un png sans l'associer à un bouton
    J'ai effectivement déjà afficher un png sans l'associer à un bouton, en utilisant justement dans la méthode "OnPaint(wxPaintEvent& evt)", la fonction "DrawBitmap(bitmap,x,y)". De plus, comme mes images ont bien un fond tranparent (créé avec "The Gimp" et enregistré en .png), celle-ci s'affiche bien sur mon panel sur fond transparent.
    jete un oeil sur la classe wxMemoryDC
    J'ai regarder la classe "wxMemoryDC" et d'après ce que j'ai compris (tu me diras si je me trompe), elle sert à modifier une bitmap or ce n'est pas mon cas vu que mes bitmap s'affichent bien. Mon soucis c'est d'associer mes bitmap à un bouton tout en gardant un affichage correct c'est à dire un fond transparent. A moins que je n'ai pas compris le rôle de la classe wxMemoryDC, je ne vois pas comment l'utiliser vis à vis de mon problème.
    au sample fourni avec la librairie wxWidgets -> png
    Par contre, je ne vois pas de quel sample, tu parles. Pourrais tu préciser ??

  4. #4
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Par contre, je ne vois pas de quel sample, tu parles. Pourrais tu préciser ??
    dans le repertoire sample des sources de wxwidgets que tu as télécharger tu as un repertoire png tu peux compilé le projet avec ton ide VS2005

    pourt le reste je vais essayé de faire des test
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    j'ai regardé le source du repertoire png et je t'avoue que ça ne m'a pas trop aidé. Je continue à chercher de mon côté.

  6. #6
    Membre à l'essai
    Profil pro
    Expert technique
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 20
    Points
    20
    Par défaut
    As-tu essayé en faisant hériter ta classe "bouton" de wxWindow et en utilisant SetShape?

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Je déterre ce sujet car je suis avec le meme probleme !
    En fait j ai fait pareil, ma fonction OnPaint pour les evenements EVT_PAint
    et aussi j ai mis une fonction qui fait rien pour l evenement CLEAR BACKGROUND, et donc ca marche mais des que je clique sur un autre bouton puis sur celui qui est skiné, il affiche le fond blanc !!!

    Donc as tu réussi à rendre le BitmapButton transparent ?

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    salut

    mettre un EVT_ERASE_BACKGROUND vide pour un widget le rend transparent, essayez de le faire avec le BitmapButton.

Discussions similaires

  1. [SP-2007] Afficher des images avec un fond transparent avec le composant "Summary link webpart"
    Par cloeclodesonoeuf dans le forum SharePoint
    Réponses: 1
    Dernier message: 20/09/2012, 10h35
  2. Scène avec fond transparent
    Par jcs2 dans le forum OpenGL
    Réponses: 3
    Dernier message: 01/03/2006, 10h19
  3. [FLASH] Comment créer un bouton à fond transparent ?
    Par langela94 dans le forum Flash
    Réponses: 2
    Dernier message: 20/01/2006, 15h01
  4. Image avec fond transparent
    Par Virgile59 dans le forum Access
    Réponses: 3
    Dernier message: 16/09/2005, 11h48
  5. [JButton] avec un fond transparent
    Par Tiercel dans le forum Composants
    Réponses: 6
    Dernier message: 23/09/2004, 09h19

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