cs_sam469
Messages postés90Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention21 juin 2009
-
18 juin 2009 à 22:53
cs_sam469
Messages postés90Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention21 juin 2009
-
21 juin 2009 à 00:05
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
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 20 juin 2009 à 22:41
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. <
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 20 juin 2009 à 15:19
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. <
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 20 juin 2009 à 15:55
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. <
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_sam469
Messages postés90Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention21 juin 20091 20 juin 2009 à 20:43
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
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 20 juin 2009 à 22:09
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. <
cs_sam469
Messages postés90Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention21 juin 20091 20 juin 2009 à 22:18
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!
cs_sam469
Messages postés90Date d'inscriptionmardi 27 décembre 2005StatutMembreDernière intervention21 juin 20091 20 juin 2009 à 23:31
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
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 20 juin 2009 à 23:59
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. <