+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Sinusoide con controllo Chart

  1. #1
    krossk2 non è in linea Scolaretto
    ciao a tutti, è la prima volta che utilizzo il nuovo controllo chart di visual studio, e trovandomi in difficoltà mi sto rivolgendo a voi... dovrei disegnare una sinusoide (devo rappresentare la frequenza della corrente alternata), che comprenda quindi sia valori positivi che negativi. il problema è che anche impostando (per prova) i valori dalle proprietà non riesco in nessun modo ad ottenere una sinusoide... qualcuno potrebbe aiutarmi? grazie a tutti...

  2. #2
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Aggiungi il controllo alla pagina.
    Vai nella proprietà->series
    imposta il ChartType di serie su "Spline"

    Ora dal codice puoi aggiungere i punti:
            Chart1.Series(0).Points.AddXY(1, 0)
            Chart1.Series(0).Points.AddXY(2, 1)
            Chart1.Series(0).Points.AddXY(3, 0)
            Chart1.Series(0).Points.AddXY(4, -1)
            Chart1.Series(0).Points.AddXY(5, 0)
    
    Eccoti la sinusoide.
    ℹ️ Leggi di più su bumm ...

  3. #3
    krossk2 non è in linea Scolaretto
    Quote Originariamente inviato da bumm Visualizza il messaggio
    Aggiungi il controllo alla pagina.
    Vai nella proprietà->series
    imposta il ChartType di serie su "Spline"

    Ora dal codice puoi aggiungere i punti:
            Chart1.Series(0).Points.AddXY(1, 0)
            Chart1.Series(0).Points.AddXY(2, 1)
            Chart1.Series(0).Points.AddXY(3, 0)
            Chart1.Series(0).Points.AddXY(4, -1)
            Chart1.Series(0).Points.AddXY(5, 0)
    
    Eccoti la sinusoide.
    grazie bumm solo che anche se io diminuisco la distanza tra i punti dell'asse x, le dimensioni della sinusoide rimangono le stesse perchè sono in scala, ma se io volessi fare che i valori dell'asse x restino fissi senza che aumentino o diminuiscano a seconda del contenuto del grafico cosa dovrei fare? grazie ancora...

  4. #4
    Quote Originariamente inviato da krossk2 Visualizza il messaggio
    anche se io diminuisco la distanza tra i punti dell'asse x, le dimensioni della sinusoide rimangono le stesse perchè sono in scala, ma se io volessi fare che i valori dell'asse x restino fissi senza che aumentino o diminuiscano a seconda del contenuto del grafico cosa dovrei fare? grazie ancora...
    In pratica vuoi poter eseguire uno Stretch del Grafico, in modo da poter aumentare o ridurre a piacere la scala X indipendentemente dalla scala Y e viceversa...
    In ogni caso, controllo Chart a parte e anche in vista di future implementazioni, se vuoi il pieno controllo su un grafico puoi sempre considerare l'ipotesi di disegnarlo tu stesso, ad esempio su una PictureBox.

    VB.NET possiede una ricca libreria Math.
    Una tecnica possibile e interessante può essere questa.
    Tutto ciò che serve è una PictureBox, nel mio codice si chiamerà "PBx".

    --> Anzitutto la Structure necessaria a memorizzare ogni punto della Funzione :

        Public Structure PtFx
            Public X As Double
            Public Y As Double
            Public Sub New(ByVal valueX As Double, ByVal valueY As Double)
                X = valueX
                Y = valueY
            End Sub
        End Structure
    
    --> Il codice per il disegno del grafico su PBx :

            Dim PAssi As New Pen(Color.Black, 1)
            Dim PGraf As New Pen(Color.Red, 1)
            Dim scalaX As Integer = 20
            Dim scalaY As Integer = 150
            Dim estremoSN As Double = -20
            Dim estremoDX As Double = 20
            Dim stepPunti As Double = 0.01
            Dim puntiFx As New List(Of PtFx)
    
            With PBx.CreateGraphics
    
                'Traslazione Origine Graphics nel centro del Control 
                .ResetTransform()
                .TranslateTransform(PBx.Width / 2, PBx.Height / 2)
    
                'Disegno Assi
                Dim p1x As New Point(-PBx.Width / 2, 0)
                Dim p2x As New Point(PBx.Width / 2, 0)
                Dim p1y As New Point(0, PBx.Height / 2)
                Dim p2y As New Point(0, -PBx.Height / 2)
                .DrawLine(PAssi, p1x, p2x)
                .DrawLine(PAssi, p1y, p2y)
    
                'Creazione Punti Funzione Y=Sen(X)
                Dim Y As Double = 0
                For X As Double = estremoSN To estremoDX Step stepPunti
                    Y = Math.Sin(X)
                    puntiFx.Add(New PtFx(X, Y))
                Next
    
                'Disegno Curva
                Dim puntiFxGraf(puntiFx.Count - 1) As Point
                For i As Integer = 0 To puntiFxGraf.Length - 1
                    puntiFxGraf(i).X = puntiFx(i).X * scalaX
                    puntiFxGraf(i).Y = puntiFx(i).Y * scalaY * -1
                Next
                .DrawCurve(PGraf, puntiFxGraf)
    
            End With
    
    Tra i vari vantaggi, scalaX e scalaY permettono lo Stretch sugli assi X e Y.
    Impostando scalaX con un valore basso, aumenta la densità dei punti X a parità di larghezza della finestra-gafico... Prova.
    ℹ️ Leggi di più su MarcoGG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Errore date in controllo chart
    Da JohnnyUltimo nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 10-10-2015, 19:16
  2. Aggiungere Series ad un Chart da Controllo
    Da Giulia_ nel forum Visual Basic .Net
    Risposte: 6
    Ultimo Post: 24-03-2013, 10:19
  3. Risposte: 0
    Ultimo Post: 19-03-2012, 20:32
  4. [WPF] Controllo Chart
    Da Ermanno nel forum Visual Basic .Net
    Risposte: 5
    Ultimo Post: 28-10-2011, 15:23
  5. Controllo Chart di Visual studio
    Da Fapic nel forum ASP 3, ASP .Net
    Risposte: 13
    Ultimo Post: 20-03-2010, 11:01