[.net 2005] Gif à fond transparent

Signaler
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009
-
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009
-
Bonjour,
Je cherche une façon d'afficher une image gif ou png ayant un fond transparent au dessu d'une autre image pour qu'à la place de la transparence de la première, on voit la deuxième.
J'ai déja cherché et essayé plusieurs techniques mais sans résultat:
-mettre le backgroundcolor à transparent
-...
Quelqu'un aurait une idée?

8 réponses

Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007

Bonjour,

Une idée, c'est sûr, mais elle est un peu plus complexe :
Tu peux "dessiner" ton image png sur ton image de fond. Je m'explique :
1- Utilise un Panel au lieu du PictureBox
2- Charge tes deux images (IM1 et IM2)
3- Dans l'évennement Paint du Panel, écrit le code suivant :

'dessin de l'image de fond :
e.graphics.drawimage(im1,.....)
'dessin de l'image transparente
e.graphics.drawimage(im2,.....)

Je n'ai pas fini l'appel aux fonction Drawimage car il y a plein de possibilités, suivant si tu veux étirer l'image, etc... si tu as du mal à coder cette partie, reposte un message.

Est-ce que cela résoud ton problème ?
AlicVB
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009

Génial!!!
Merci beaucoup, c'est nikel
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009

Et juste une question, c'est possible de déplacer l'image1 et pas la 2?
Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007

Bonjour,

Qu'entends-tu par déplacer ?
Si c'est ce que je pense, tu peux le faire avec une technique de ce style :
Défini deux variables X et Y à la racine de ta form.
Ce sera la position de ta deuxième image.
Lors des évennements que tu veux (clic de souris, touche de déplacement, ...) tu fait varier ces valeurs
Au moment de ton drawimage, tu peux définir à quel endroit l'afficher. Tu utilises donc là les valeurs X et Y

Ceci reste théorique. Si tu as du mal à le coder, reposte un message, je tacherai de te donner un exemple pratique.

Cela répond à ta question ?
AlicVB

PS : si c'est ça que tu cherches, n'oublie pas la case "réponse acceptée"
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009

Le problème c'est que je ne comprend pas quand est-ce que l'évènement Paint est appelé, tu peux m'éclairer stp.
En prtaique, je suis en train de créer un composant Bar de volume qui ressemblera à ça
Lorsqu'un bouton est appuié, on pe déplacer le truc orange en forme d'olive qu'est au milieu de tout à gauche à tout à droite; à gauche de l'olive c'est orange et à droite c'est gris.
Une idée pour résoudre mon problème?
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009

Je viens de trouver comment faire, seulement le problème c'est qu'on voit l'olive clignoter très rapidement lorsque je la déplace. Quelqu'un aurait une idée pour régler ça.
Voila mon code simplifié:
    Public pos As Integer
    Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        pos = 10
    End Sub

    Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
        If e.Button <> Windows.Forms.MouseButtons.None Then
            pos = e.Location.X
            Panel1.Refresh()
        End If
    End Sub

    Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
        'dessin de l'image transparente
        e.Graphics.DrawImage(bar.Images.Item(0), pos, 1)
    End Sub
Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007

Bonjour,

Pour ton problème de Clignotement, c'est un grand classique et récurent. Pour l'éviter, il faut utiliser un double buffer. Deux solutions (à ma connaissance) pour cela :
- La plus simple : positionner la valeur DoubleBuffer de ta form (ou de ton UserControl) à True. Je pense que cela devrait suffire vu la taille de tes images.
-L'autre est plus compliquée. Je l'ai utilisé pour la source : http://www.vbfrance.com/codes/AFFICHAGE-PLEIN-ECRAN-FLUIDE-PHOTOS-AVEC-ZOOM-DEPLACEMENTS_36676.aspx
Ici, il s'agit de déplacer des photos, et la méthode 1 ne suffisait pas.

J'espère que ça résoud ton problème. Tiens moi au courant.

AlicVB
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009

Chez moi ça ne change absoluement rien ta première technique et je t'avoue que je ne comprend pas vraiment le code source de la deuxième. Tu pourrais m'expliquer ce que je doit mettre dans ma source pk j'avoue que l'histoir du double buffer me dépasse un peu...