Draw Sine Wave animé

Résolu
Messages postés
6
Date d'inscription
dimanche 12 mars 2017
Statut
Membre
Dernière intervention
8 janvier 2022
-
Messages postés
16745
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 janvier 2022
-
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

3 réponses

Messages postés
6
Date d'inscription
dimanche 12 mars 2017
Statut
Membre
Dernière intervention
8 janvier 2022
1
j'ai trouver la solution a mon problème.
voici en image
Messages postés
16745
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 janvier 2022
584
Messages postés
16745
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 janvier 2022
584
Ou alors, peut-être que dériver une pictureBox sur laquelle tu dessine une ligne serait plus simple
Messages postés
16745
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
28 janvier 2022
584
Super