[.net 2005] Gif à fond transparent

sousoulebarbu Messages postés 101 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 11 janvier 2009 - 25 mai 2006 à 11:13
sousoulebarbu Messages postés 101 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 11 janvier 2009 - 26 mai 2006 à 18:55
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

alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
25 mai 2006 à 17:06
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
0
sousoulebarbu Messages postés 101 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 11 janvier 2009
25 mai 2006 à 18:03
Génial!!!
Merci beaucoup, c'est nikel
0
sousoulebarbu Messages postés 101 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 11 janvier 2009
25 mai 2006 à 18:30
Et juste une question, c'est possible de déplacer l'image1 et pas la 2?
0
alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
25 mai 2006 à 19:18
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"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sousoulebarbu Messages postés 101 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 11 janvier 2009
25 mai 2006 à 20:19
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?
0
sousoulebarbu Messages postés 101 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 11 janvier 2009
25 mai 2006 à 20:57
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
0
alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
26 mai 2006 à 11:26
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
0
sousoulebarbu Messages postés 101 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 11 janvier 2009
26 mai 2006 à 18:55
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...
0
Rejoignez-nous