Images transparente (comme un splash screen) [Résolu]

Signaler
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
-
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
-
Bonsoir a toutes & a tous!!

je souhaiterai savoir comment faire réaliser un application qui rend une image transparente avec un timer

(Au début le plus transparent possible pour finir complètement opaque)

Il y a bien longtemps j'y était arriver avec VB6 mais jais perdu ma source :-(, sa doit faire maintenant 3 ans

Maintenant je suis sou VB EXPRESS 2008

Merci énormément de votre aide!!

S@m

18 réponses

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
ah oué! quand meme !! lol

T'inquiète pas on est tous passé par la ^^

Bon en fait c'est simple, ne laisse qu'un timer dans ton form et colle ce code :

Private _Hide As Boolean 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    IfNot _Hide Then
        Me.Opacity += 0.01         If Me.Opacity 1 Then _Hide True
    Else
        Me.Opacity -= 0.01
        IfMe.Opacity = 0 Then
            'Lance ici la feuille principale de ton application
            Me.Close
        End If
    End If
End Sub

Wala ;) @+

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
mis à part que le booléen n'est pas spécialement utile, ta correction est bonne

timer à 50, true

        If Me.Opacity <= 0 Then
            Timer1.Enabled = False
            'Lance ici la feuille principale de ton application
            Me.Close()
        Else
            Me.Opacity -= 0.02
        End If

NB : ne pas oublier de décocher la fermeture de l'application à la première form dans les propriétés du projet
++
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Bonjour,

Les fonctions GDI+ du framework (System.Drawing et System.Drawing.Drawing2D) gèrent les images 32bits (avec le byte de transparence), il doit donc exister une solution.

Il faudrait créer un Graphic à base de l'image, que celui-ci récupère les pixels de cette image et joue avec le byte du plan alpha. Cela ne me semble pas bien compliqué à faire, je pense qu'il doit y avoir une fonction qui doit permettre de retrouver un pixel de ton image sous forme de System.Color (donc une gestion RGB + A), il reste en suite à modifier la couleur et la réintégré à l'image.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Bon je me suis penché dessus, en fait même pas besoin de 'Graphics' ^^
La classe Bitmap gère le GetPixel et SetPixel, du coup c'est simple comme bonjour !

Public Function SetImageOpacity(ByVal Filename As String, ByVal Opacity As Byte) As Image
    '
    Dim _src As New Bitmap(Filename)
    Dim _ret As New Bitmap(_src.Width, _src.Height) 
    '
    Try 
        '
        For X = 0 To _src.Width - 1 
           For Y = 0 To _src.Height - 1 
              Dim c As Color = _src.GetPixel(X, Y)
              Dim nc As Color = Color.FromArgb(Opacity, c.R, c.G, c.B)
              _ret.SetPixel(X, Y, nc)
           Next 
        Next 
        '
    Catch ex As Exception 
        '
        MsgBox(ex.Message) 
        '
    End Try 
    '
    Return _ret 
    '
End Function

Bien entedue, la classe System.Drawing.Bitmap, gère plusieurs formats d'images (jpeg, gif, png etc..), ce code ne fonctionne que sur des images prenant en charge les couleurs 32bits avec plan alpha.

@+ Mayzz

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
1
Salut!

Merci pour ta réponce :-) je vais tester cela de suite!!!!

Merci encore ^^

je te tient au courant

A très vite!

S@m
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
1
Re salut!!

En faite pour la transparence j'utilise la fonction "transparencykey", et une images du type .PNG sur la quel je  doit faire HYPER GAFFE au pixel car le "transparencyKey" ne  gère que les pixel blanc PURE!

2tant vraiment débutant en VB (sa fait 3 ans que je ny est pas toucher -_-) aurait tu un source déjà faite ??

Par ailleurs je voulait savoir comment utiliser un Timer (pour qu'il fasse apparaitre une images petit a petit en utilisant le Opacity?

(j'arrive a l'utiliser, mais disons que je doit utiliser 20 Timer :s

Merci beaucoup pour ton aide :-)

A très vite!!

S@m
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
TransparencyKey ???

Pour quoi faire ? tu veux faire un formulaire transparent ? Tu peux utiliser les régions pour cela. Pour ce qui est du timer, la je vois pas... 20 timer (un par image ? t'as 20 images ?) pour faire quoi ?

Sois plus claire explique moi le but de ton programme sinon je ne pourrais pas t'aider...

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
1
Re salut!

Et bien le but de mon micro-programme c'est tous simplement un "splash screen"

Étant donner que je suis vraiment, mais vraiment novice voila mon code tous entier

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Me.Opacity = 0.1
        Timer2.enabled = True
        Timer1.Enabled = False
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Me.Opacity = 0.2
        Timer3.Enabled = True
        Timer2.Enabled = False
    End Sub

    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        Me.Opacity = 0.3
        Timer4.Enabled = True
        Timer3.Enabled = False
    End Sub

    Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
        Me.Opacity = 0.4
        Timer5.Enabled = True
        Timer4.Enabled = False
    End Sub

    Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer5.Tick
        Me.Opacity = 0.5
        Timer6.Enabled = True
        Timer5.Enabled = False
    End Sub

    Private Sub Timer6_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer6.Tick
        Me.Opacity = 0.6
        Timer7.Enabled = True
        Timer6.Enabled = False
    End Sub

    Private Sub Timer7_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer7.Tick
        Me.Opacity = 0.7
        Timer8.Enabled = True
        Timer7.Enabled = False
    End Sub

    Private Sub Timer8_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer8.Tick
        Me.Opacity = 0.8
        Timer9.Enabled = True
        Timer8.Enabled = False
    End Sub

    Private Sub Timer9_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer9.Tick
        Me.Opacity = 0.9
        Timer10.Enabled = True
        Timer9.Enabled = False
    End Sub

    Private Sub Timer10_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer10.Tick
        Me.Opacity = 1
        Timer11.Enabled = True
        Timer10.Enabled = False
    End Sub

    Private Sub Timer11_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer11.Tick
        Me.Opacity = 0.9
        Timer12.Enabled = True
        Timer11.Enabled = False
    End Sub

    Private Sub Timer12_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer12.Tick
        Me.Opacity = 0.8
        Timer13.Enabled = True
        Timer12.Enabled = False
    End Sub

    Private Sub Timer13_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer13.Tick
        Me.Opacity = 0.7
        Timer14.Enabled = True
        Timer13.Enabled = False
    End Sub

    Private Sub Timer14_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer14.Tick
        Me.Opacity = 0.6
        Timer15.Enabled = True
        Timer14.Enabled = False
    End Sub

    Private Sub Timer15_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer15.Tick
        Me.Opacity = 0.5
        Timer16.Enabled = True
        Timer15.Enabled = False
    End Sub

    Private Sub Timer16_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer16.Tick
        Me.Opacity = 0.4
        Timer17.Enabled = True
        Timer16.Enabled = False
    End Sub

    Private Sub Timer17_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer17.Tick
        Me.Opacity = 0.3
        Timer18.Enabled = True
        Timer17.Enabled = False
    End Sub

    Private Sub Timer18_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer18.Tick
        Me.Opacity = 0.2
        Timer19.Enabled = True
        Timer18.Enabled = False
    End Sub

    Private Sub Timer19_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer19.Tick
        Me.Opacity = 0.1
        Timer20.Enabled = True
        Timer19.Enabled = False
    End Sub

    Private Sub Timer20_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer20.Tick
        Me.Opacity = 0
        End
    End Sub

End Class

PS: non je n'est qu'une images, mais c'est pour un effet d'opaciter

Je te joint mon Projet tous entier pour que tu comprenne mieux!

http://samsi69.free.fr/VB/SPLASH.rar

Merci encore une foi :-) et désoler pour ma "novicitude"

A très vite!

S@m
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,
20 timers???

il n'y a plus de variable (à incrémenter) en vb.net ?... 
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Salut PCPT ;)

Comment ça plus de variable à incrémenter en .net ?

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut Mayzz,
on s'est croisé...

juste en voyant les timers, je n'ai même pas regardé me me.opacity, je demandais juste (ironiquement
) si la notion de variable n'existait plus...
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Effectivement :)

Ah ok, ok, je pensais qu'il y avais un moyen autre pour incrémenter les variables(automatiquement) et que je sois passé à coté bêtement ^^

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
1
Ba je n'en c'est rien étant donnée que je n'y connait absolument rien vu je débute TOTALEMENT :-)

si vous pouvait me donner un petit coup de main !!!

Merci a tous!

S@m
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
1
Merci je vais tester le bout de code a intégrer dans la page Numéro 1 du poste :-)

IfNot _Hide Then
        Me.Opacity += 0.01         If Me.Opacity 1 Then _Hide True
    Else
        Me.Opacity -= 0.01
        IfMe.Opacity = 0 Then
            'Lance ici la feuille principale de ton application
            Me.Close
        End If
    End If

Merci a vous ;)

je vous tien au courant :-D

A très vite!

S@m
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Arf, en fait j'ai mis le booléen car il souhaitait que son image apparaise en puis disparaisse en fondue...

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
1
Re re Salut!

Comment mettre une pause dans le timer?

pour qu'il s'arrête 2 petit seconde lorsque l'image et complétement opaque?

Merci beaucoup :-)

A très vite!

S@m
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Ca freez un peu l'appli mais... (après tout c'est un splash)

If Not _Hide Then
Me.Opacity += 0.01
If Me.Opacity = 1 Then
Threading.Thread.Sleep(2000)
_Hide = True
End If
Else
Me.Opacity -= 0.01
If Me.Opacity = 0 Then
End If
End If

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
90
Date d'inscription
mardi 27 décembre 2005
Statut
Membre
Dernière intervention
21 juin 2009
1
Ahhh!! impeccable ^^

Je te remercie pour ton bout de code, c'est vraiment sympa de ta par (et la participation de "PCPT") :-)

Sa fonctionne impeccable :-D

Merci encore à vous deux pour votre aide ^^

A très vite!!

S@m