Draw Sine Wave animé

Résolu
miska59 Messages postés 6 Date d'inscription dimanche 12 mars 2017 Statut Membre Dernière intervention 8 janvier 2022 - 6 janv. 2022 à 13:30
Whismeril Messages postés 18190 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 janvier 2023 - 8 janv. 2022 à 14:35
Bonjour, j'arrive pas à le rendre Draw Sine Wave Animé.

voici en image :


mon code :
Public Class Wave : Inherits Control

    Private _waveSleep As Integer = 50
    Public Property WaveSleep As Integer
        Get
            Return _waveSleep
        End Get
        Set(ByVal value As Integer)
            If value <= 0 Then Return
            _waveSleep = value
            If timer IsNot Nothing Then
                timer.Enabled = False
                timer.Interval = value
                timer.Enabled = True
            End If
        End Set
    End Property

    Private _waveWidth As Integer = 200
    Public Property WaveWidth As Integer
        Get
            Return _waveWidth
        End Get
        Set(ByVal value As Integer)
            _waveWidth = value
            LeftX = value * -1
        End Set
    End Property

    Private _waveHeight As Integer = 10
    Public Property WaveHeight As Integer
        Get
            Return _waveHeight
        End Get
        Set(ByVal value As Integer)
            'If value < 6 OrElse value > 20 Then Return
            _waveHeight = value
        End Set
    End Property

    Private WithEvents timer As New Timer()
    Private LeftX As Integer = 0

    Public Sub New()
        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint, True)
        timer.Interval = _waveSleep
        AddHandler timer.Tick, AddressOf timer_Tick
        AddHandler Me.VisibleChanged, AddressOf Wave_VisibleChanged
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        MyBase.OnPaint(e)
        Dim rect As New Rectangle(0, 0, Me.Width, Me.Height)
        Dim g As Graphics = e.Graphics
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        g.DrawRectangle(Pens.Black, New Rectangle(rect.X, rect.Y, rect.Width - 1, rect.Height - 1))
        Dim points As New List(Of PointF)
        Dim _intX As Integer = LeftX
        Dim y_offset As Integer = CInt(rect.Height / 2)
        points.Add(New Point(_intX, rect.Height))
        Dim x_scale As Single = CSng(_waveHeight * Math.PI / (_intX - _waveWidth))
        For x As Integer = 0 To rect.Width - 1
            Dim y As Single = CSng((y_offset + _waveHeight * Math.Sin(x * x_scale)))
            points.Add(New Point(x, y))
        Next
        g.DrawLines(New Pen(Brushes.Blue), points.ToArray)
    End Sub

    Private Sub timer_Tick(sender As Object, e As EventArgs)
        LeftX -= 10
        If LeftX = _waveWidth * -2 Then LeftX = _waveWidth * -1
        Me.Refresh()
    End Sub

    Private Sub Wave_VisibleChanged(sender As Object, e As EventArgs)
        timer.Enabled = Me.Visible
    End Sub

End Class


pouvez-vous m'aider résoudre mon problème de Draw waves animé? Merci d'avance
A voir également:

3 réponses

miska59 Messages postés 6 Date d'inscription dimanche 12 mars 2017 Statut Membre Dernière intervention 8 janvier 2022 1
8 janv. 2022 à 12:47
j'ai trouver la solution a mon problème.
voici en image
1
Whismeril Messages postés 18190 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 janvier 2023 622
6 janv. 2022 à 15:56
0
Whismeril Messages postés 18190 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 janvier 2023 622
6 janv. 2022 à 15:59
Ou alors, peut-être que dériver une pictureBox sur laquelle tu dessine une ligne serait plus simple
0
Whismeril Messages postés 18190 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 janvier 2023 622
8 janv. 2022 à 14:35
Super
0
Rejoignez-nous