Else valeur = valeur
If valeur 13 Then valeur 13 Else valeur = valeur
Option Strict On
Image.FromFile("..\img" & valeur & ".png")
If valeur 14 Then valeur 13 Else valeur = valeurc'est 14 désoler
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionElse valeur = valeurNe sert à rien.
Image.FromFile("..\img" & valeur & ".png")
Image.FromFile("..\img" & valeur.ToString & ".png")
Using flux As New IO.FileStream("..\img" & valeur.ToString & ".png", IO.FileMode.OpenOrCreate) Dim b As New Bitmap(flux) b.MakeTransparent(Color.White) Me.BackgroundImage = b End Using
' ne permet pas de dépassé 13 ni 0
If valeur 0 Then valeur 1 Else valeur = valeur
If valeur 13 Then valeur 13 Else valeur = valeur
If valeur 14 Then valeur 13 Else valeur = valeur
c'est 14 désoler
et donc çà fait un "freeze" noir, à cause de la transparence, je pense. Comment éviter çà ?
Public Class Form1 Dim WithEvents tmr As New Timer Dim rd As New Random Dim vu As New clsVuM Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.Add(vu) tmr.Interval = 50 tmr.Start() End Sub Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick vu.L = rd.Next(0, 40000) vu.R = rd.Next(0, 40000) End Sub Public Class clsVuM Inherits PictureBox Dim _L, _R As Integer Dim vu As System.Timers.Timer = New System.Timers.Timer(50) Sub New() AddHandler vu.Elapsed, AddressOf vu_Elapsed With Me .BackColor = Color.Black .BorderStyle = Windows.Forms.BorderStyle.FixedSingle .Width = 60 .Height = 100 End With vu.Start() End Sub Private Sub vu_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Try Me.Image = ImageVuMetre() Catch End Try End Sub Private Function ImageVuMetre(Optional ByVal Noir As Boolean = False) As Image Dim Larg As Integer = Me.Width - 2 Dim Haut As Integer = Me.Height - 2 Dim rect As New Rectangle(0, 0, Larg - 1, Haut - 1) Dim rectg As New Rectangle(0, 0, CType(Larg / 2, Integer), Haut) Dim rectd As New Rectangle(CType(Larg / 2, Integer), 0, Larg, Haut) Dim b As New Bitmap(rect.Width, rect.Height) Dim g As Graphics = Graphics.FromImage(b) Dim f As New Font("Arial", 20, FontStyle.Regular, GraphicsUnit.Pixel) g.FillRectangle(Brushes.Black, rect) If Noir Then Return CType(b.Clone, Image) Dim vg As Integer = CType((_L / 30000) * rectd.Height, Integer) Dim vd As Integer = CType((_R / 30000) * rectg.Height, Integer) For x = 0 To Haut If x Mod 25 = 0 Then g.DrawLine(Pens.Gray, 0, Haut - x, Larg, Haut - x) End If If x Mod 2 = 0 Then If x < vg Then g.DrawLine(ChoixPen(x), 0, Haut - x, Convert.ToInt32(Larg / 2), Haut - x) End If If x < vd Then g.DrawLine(ChoixPen(x), Convert.ToInt32(Larg / 2), Haut - x, Larg, Haut - x) End If End If Next g.DrawString("G", f, Brushes.Black, 4, Haut - 25) g.DrawString("D", f, Brushes.Black, Convert.ToInt32(Larg / 2) + 4, Haut - 25) g.DrawRectangle(Pens.Black, rectg) g.DrawRectangle(Pens.Black, rectd) g.Dispose() Return CType(b.Clone, Image) End Function Private Function ChoixPen(ByVal Trigger As Integer) As Pen If Trigger >= 0 And Trigger < 25 Then Return Pens.GreenYellow ElseIf Trigger > 24 And Trigger < 50 Then Return Pens.Yellow ElseIf Trigger > 49 And Trigger < 75 Then Return Pens.Orange ElseIf Trigger >= 75 And Trigger <= 100 Then Return Pens.Red End If Return Nothing End Function WriteOnly Property L() As Integer Set(ByVal value As Integer) _L = value End Set End Property WriteOnly Property R() As Integer Set(ByVal value As Integer) _R = value End Set End Property End Class End Class
Public Class Form1 Dim WithEvents tmr As New Timer Dim rd As New Random Dim vu As New clsVuM Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.Add(vu) tmr.Interval = 50 tmr.Start() End Sub Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick vu.L = rd.Next(0, 180) vu.R = rd.Next(0, 180) End Sub Public Class clsVuM Inherits PictureBox Dim _L, _R As Integer Dim Haut, Larg As Integer Dim vu As System.Timers.Timer = New System.Timers.Timer(50) Sub New() AddHandler vu.Elapsed, AddressOf vu_Elapsed With Me .BackColor = Color.Black .BorderStyle = Windows.Forms.BorderStyle.FixedSingle .Width = 100 .Height = 200 End With Larg = Me.Width / 2 Haut = Me.Height / 2 vu.Start() End Sub Private Sub vu_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Try Me.Image = ImageVuMetre() Catch End Try End Sub Private Function ImageVuMetre(Optional ByVal Noir As Boolean = False) As Image Dim rect As New Rectangle(0, 0, 200, 200) Dim b As New Bitmap(rect.Width, rect.Height) Dim g As Graphics = Graphics.FromImage(b) Dim f As New Font("Arial", 20, FontStyle.Regular, GraphicsUnit.Pixel) g.FillRectangle(Brushes.Black, rect) If Noir Then Return CType(b.Clone, Image) For i = 180 To _L Step -5 Dim x As Double = 100 * Math.Sin(i * (Math.PI / 180)) Dim y As Double = 100 * Math.Cos(i * (Math.PI / 180)) g.DrawLine(ChoixPen(i), 100, 100, 100 + Convert.ToInt32(x), 100 + Convert.ToInt32(y)) Next b.RotateFlip(RotateFlipType.RotateNoneFlipX) b.RotateFlip(RotateFlipType.Rotate180FlipX) g.FillPie(Brushes.Black, New Rectangle(50, 50, 100, 100), 0, 360) g.Dispose() Return CType(b.Clone, Image) End Function WriteOnly Property L() As Integer Set(ByVal value As Integer) _L = value End Set End Property WriteOnly Property R() As Integer Set(ByVal value As Integer) _R = value End Set End Property Private Function ChoixPen(ByVal valeur As Double) As Pen Dim r, g, b As Double HlsToRgb(valeur, 0.5, 1, r, g, b) r *= 255 g *= 255 b *= 255 Dim c As Color = New Color c = Color.FromArgb(r, g, b) Return New Pen(c, 3) End Function Private Sub HlsToRgb(ByVal H As Double, ByVal L As Double, ByVal S As Double, ByRef R As Double, ByRef G As _ Double, ByRef B As Double) Dim p1 As Double Dim p2 As Double If L <= 0.5 Then p2 = L * (1 + S) Else p2 = L + S - L * S End If p1 = 2 * L - p2 If S = 0 Then R = L G = L B = L Else R = QqhToRgb(p1, p2, H + 120) G = QqhToRgb(p1, p2, H) B = QqhToRgb(p1, p2, H - 120) End If End Sub Private Function QqhToRgb(ByVal q1 As Double, ByVal q2 As Double, ByVal hue As Double) As Double If hue > 360 Then hue -= 360 ElseIf hue < 0 Then hue += 360 End If If hue < 60 Then QqhToRgb = q1 + (q2 - q1) * hue / 60 ElseIf hue < 180 Then QqhToRgb = q2 ElseIf hue < 240 Then QqhToRgb = q1 + (q2 - q1) * (240 - hue) / 60 Else QqhToRgb = q1 End If End Function End Class End Class
Private Function ImageVuMetre() As Image 'déclaration d'un nouveau bitmap sur lequel on va dessiner Dim b As New Bitmap(200, 200) 'déclaration de l'objet graphique qui va servir à dessiner sur le bitmap Dim g As Graphics = Graphics.FromImage(b) 'là on dessine un fond noir sur tout le bitmap g.FillRectangle(Brushes.Black, b.GetBounds(GraphicsUnit.Pixel)) 'ici on fait varier un angle (i) de 180° à 0° en sautant de 5° 'si tu remplace Step -5 par Step -1, tu n'aura pas l'effet de séparation (stries noires) For i = 180 To _L Step -1 'bon là ce sont des maths (va voir tes cours de 6eme lol) Dim x As Double = 100 * Math.Sin(i * (Math.PI / 180)) Dim y As Double = 100 * Math.Cos(i * (Math.PI / 180)) 'et la on dessine la ligne qui part du centre du cercle vers le point x,y 'on choisit la couleur par la fonction ChoixPen avec l'angle en paramètre g.DrawLine(ChoixPen(i), 100, 100, 100 + Convert.ToInt32(x), 100 + Convert.ToInt32(y)) Next 'on fait pivoter le bitmap dans la position voulue b.RotateFlip(RotateFlipType.RotateNoneFlipX) b.RotateFlip(RotateFlipType.Rotate180FlipX) 'et on dessine un cercle noir au centre g.FillPie(Brushes.Black, New Rectangle(50, 50, 100, 100), 0, 360) 'on libère l'objet graphique g.Dispose() 'et la fonction retourne l'image obtenue Return CType(b.Clone, Image) End Function