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 :

Picturebox et backgroundcolor


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Picturebox et backgroundcolor
    Bonjour,

    Après avoir explorer pas mal de pistes, je m'en remets à vous car je bloque totalement.

    Dans une picturebox de 1000*1000, j'insère deux autres picturebox avec un fond transparent et des évènements (drag, drop, ...)
    Je précise bien que max2.png a un fond transparent. il est en pièce jointe.

    Malheureusement quand je superpose les deux images mon fond est pas transparent mais de la couleur mon panel (blanc).

    une petite capture écran : le jaune c'est le problème
    Nom : vb.PNG
Affichages : 68
Taille : 291,9 Ko

    Mon code :
    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
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint
     
        Dim PictureBoxMapToken As New PictureBox
        PictureBoxMapToken.AllowDrop = True
        PictureBoxMapToken.SizeMode = PictureBoxSizeMode.AutoSize
        PictureBoxMapToken.BackColor = System.Drawing.Color.Transparent
        PictureBoxMapToken.Height = 1000
        PictureBoxMapToken.Width = 1000
     
        Panel1.BackColor = System.Drawing.Color.Transparent
        Panel1.Controls.Add(PictureBoxMapToken)
     
     
        Dim objBitMap1 As Bitmap = Image.FromFile(Application.StartupPath & "\Assets\IsosCheck\max2.png")
        Dim objPictureBoxToken As New PictureBox
        objPictureBoxToken.Name = "PictureBox33"
        objPictureBoxToken.AllowDrop = True
        objPictureBoxToken.Height = objBitMap1.Height
        objPictureBoxToken.Width = objBitMap1.Width
        objPictureBoxToken.BackColor = System.Drawing.Color.Transparent
        objPictureBoxToken.SizeMode = PictureBoxSizeMode.StretchImage
        objPictureBoxToken.Margin = New Padding(0, 0, 0, 0)
        objPictureBoxToken.Padding = New Padding(0, 0, 0, 0)
     
     
        objPictureBoxToken.Image = objBitMap1
        objPictureBoxToken.TabIndex = 0
        objPictureBoxToken.TabStop = False
        AddHandler objPictureBoxToken.MouseMove, AddressOf objPictureBoxToken_MouseMove
        AddHandler objPictureBoxToken.MouseClick, AddressOf ObjPictureBoxToken_MouseClick
        AddHandler objPictureBoxToken.MouseHover, AddressOf ObjPictureBoxToken_MouseHover
        AddHandler objPictureBoxToken.MouseLeave, AddressOf ObjPictureBoxToken_MouseLeave
        AddHandler objPictureBoxToken.MouseWheel, AddressOf ObjPictureBoxToken_MouseWheel
     
        PictureBoxMapToken.Controls.Add(objPictureBoxToken)
     
     
        Dim objPictureBoxToken2 As New PictureBox
        objPictureBoxToken2.Name = "PictureBox34"
        objPictureBoxToken2.AllowDrop = True
        objPictureBoxToken2.Height = objBitMap1.Height
        objPictureBoxToken2.Width = objBitMap1.Width
        objPictureBoxToken2.BackColor = System.Drawing.Color.Transparent
        objPictureBoxToken2.SizeMode = PictureBoxSizeMode.StretchImage
        objPictureBoxToken2.Margin = New Padding(0, 0, 0, 0)
        objPictureBoxToken2.Padding = New Padding(0, 0, 0, 0)
     
     
        objPictureBoxToken2.Image = objBitMap1
        objPictureBoxToken2.TabIndex = 0
        objPictureBoxToken2.TabStop = False
        AddHandler objPictureBoxToken2.MouseMove, AddressOf objPictureBoxToken_MouseMove
        AddHandler objPictureBoxToken2.MouseClick, AddressOf ObjPictureBoxToken_MouseClick
        AddHandler objPictureBoxToken2.MouseHover, AddressOf ObjPictureBoxToken_MouseHover
        AddHandler objPictureBoxToken2.MouseLeave, AddressOf ObjPictureBoxToken_MouseLeave
        AddHandler objPictureBoxToken2.MouseWheel, AddressOf ObjPictureBoxToken_MouseWheel
     
        PictureBoxMapToken.Controls.Add(objPictureBoxToken2)
     
    End Sub
    Merci par avance de votre aide.
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    windows forms ne gère pas la transparence de manière idéale
    quand un controle est transparent il demande à son parent de se dessiner sur lui avant qu'il se dessine lui même
    aussi quand 2 controles se chevauchent on ne ne verra jamais l'autre

    wpf a réglé ce problème, mais tu n'as pas peut etre pas envie de migrer ton app ^^ (ca peut prendre du temps car wpf c'est assez différent de winforms)
    tu peux surement t'en sortir en windows forms en faisant toi même un controle qui peut héberger et placer plusieurs images
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    la question subsidiaire est quel fond tu veux voir à travers la transparence de ta picturebox ?

    Dans les réponses que l'on trouve sur SO, il y a de changer le parent de la picturebox qui est au dessus par la picturebox qui est en dessous (PictureBoxOnTop.Parent = PictureBoxUnder)
    ou de dessiner directement les images via e.Graphics.DrawImage (mais ça va poser problème pour la gestion des événements)

Discussions similaires

  1. VB6] imprimer le texte afficher dans une picturebox
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/08/2004, 11h15
  2. [C#] Capture écran dans pictureBox
    Par Gauden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2004, 10h18
  3. LABEL QUI DISPARAIT SUR UN PICTUREBOX !
    Par Sophie42 dans le forum MFC
    Réponses: 2
    Dernier message: 13/01/2004, 12h10
  4. [VB6] [Graphisme] Inversion dans picturebox
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 16/04/2003, 15h05
  5. [VB6] [Graphisme] Arc de cercle dans un picturebox
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/11/2002, 17h55

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