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

VB.NET Discussion :

Problème de transparence de PictureBox avec vb.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Par défaut Problème de transparence de PictureBox avec vb.net
    Bonjour,

    Je voudrais afficher une image qui contiens des zones transparents (png ou gif) dans une pictureBox en vb.net.
    Mais le probleme c'est que je n'arrive pas à rendre le fond de la picturebox transparent. J'ai tester plusieurs codes ou astuces trouver ici et la sur le net mais rien ne marche.

    Je sais que la question à déjà était posée pour le vb6 et antérieur mais je ne trouve rien pour le vb.net .

    Si quelqu'un peut m'aider je l'en remercie d'avance.

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZePictureBox.BackColor = Color.Transparent;
    ?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Par défaut
    j'ai déjà esseyer ça ne marche pas...

    la couleur Color.Transparent existe belle et bien mais ça donne du blanc au final.

    merci quand même, une autre idée peut étre?

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    ça met comme couleur de fond celle du composant parent (ou à défaut, celle de la form).
    Mais dit moi, que veux tu faire exactement ? superposer des pictureBox ou quoi ?

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Par défaut
    ça met comme couleur de fond celle du composant parent
    merci ça explique pourquoi j'ai un blanc.

    Effectivement je cherche a superposer plusieurs pictureBox.
    Enfin pas forcement des PictureBox je veux superposer plusieurs images avec gestion de la transparent et possiblité de gere et modifier la position de l'image.

    J'espère étre assez claire.

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Si tu veux faire tout ça toi même il faudra tricher :
    Dans ton projet, tu rajoutes cette classe.
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
        public class TrickedPictureBox : PictureBox
        {
            public TrickedPictureBox()
            {
                OldParent = null;
            }
     
            protected virtual Control OldParent { get; set; }
     
            protected override void OnPaint(PaintEventArgs pe)
            {
                if (Parent != OldParent)
                {
                    OldParent = Parent;
                    try
                    {
                        Parent.Paint -= new PaintEventHandler(OldParent_Paint);
                    }
                    catch { }
     
                    if (OldParent != null)
                    {
                        try
                        {
                            OldParent.Paint += new PaintEventHandler(OldParent_Paint);
                            OldParent.Invalidate();
                        }
                        catch { }
                    }
                }
                if (BackColor == Color.Transparent)
                {
                    /* nothing */
                }
                else
                {
                    base.OnPaint(pe);
                }
            }
     
            void OldParent_Paint(object sender, PaintEventArgs e)
            {
                if (Image != null)
                {
                    e.Graphics.DrawImage(Image, new Point(Left, Top));
                }
            }
        }
    Et tu remplaces tes PictureBox par mes TrickedPictureBox, et dit moi si ça marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de sauvegarde des données avec ADO.net
    Par xave4552 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 20/02/2013, 04h26
  2. Problème d'ajout des données avec ado.net
    Par ahmedbj dans le forum ADO.NET
    Réponses: 10
    Dernier message: 14/03/2012, 13h36
  3. [Débutant] Problème executer un fichier .bat avec ASP .net (script en vb)
    Par MidoKorg dans le forum ASP.NET
    Réponses: 1
    Dernier message: 30/09/2011, 17h45
  4. Problème connexion sql server 2005 avec asp.net en C#
    Par PKO06 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/05/2007, 18h46
  5. [VB.NET] Problème de connexion à la base avec VB.net
    Par Bqda dans le forum Windows Forms
    Réponses: 13
    Dernier message: 02/04/2006, 13h56

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