Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.Drawing
- Public Class Form1
- 'DICHIARAZIONI VARIABILI GLOBALI
- Dim disegno As Graphics
- Dim Asse As Graphics
- Dim OrigineX As Integer
- Dim OrigineY As Integer
- Dim Told As Integer
- Dim Tnew As Integer = 0
- Dim Yold As Double
- Dim YoldINT As Integer
- Dim Ynew As Double = 0
- Dim YnewINT As Integer
- Dim STOPval As Boolean = False
- 'LA PRIMA FUNCTION CHE VIENE CHIAMTA (MAIN in C)
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- disegnagrafico()
- End Sub
- 'QUANDO PREMI IL PULSANTE GENERA
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Button3.Enabled = True
- ResetGrafico()
- OrigineX = 15
- OrigineY = 150
- Told = OrigineX
- Yold = OrigineY
- disegnagrafico()
- Disegnatore.Interval = QuantoTempoT.Text
- Disegnatore.Start()
- End Sub
- 'QUANTO PREMI IL PULSANTE RESET
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- ResetGrafico()
- Button3.Enabled = False
- End Sub
- 'QUANDO PREMI IL PULSANTE STOP
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
- If (STOPval = True) Then
- Disegnatore.Stop()
- STOPval = False
- Else
- Disegnatore.Start()
- STOPval = True
- End If
- End Sub
- 'DISEGNO DELLA SINUSOIDE
- Private Sub Disegnatore_Tick(sender As Object, e As EventArgs) Handles Disegnatore.Tick
- STOPval = True
- InfoLabel.Text = "Generazione sinusoide avviata..."
- disegno = PictureBox1.CreateGraphics
- Tnew = Told + 1
- Ynew = OrigineY + (ValoreMassimoT.Text * Math.Sin((angolo2radiante(RotazioneT.Text) / PeriodoT.Text) * Tnew + angolo2radiante(AngoloSfasamentoT.Text)))
- YnewINT = Convert.ToInt32(Int(Ynew))
- YoldINT = Convert.ToInt32(Int(Yold))
- disegno.DrawLine(Pens.Red, Told, YoldINT, Tnew, YnewINT)
- Told = Tnew
- Yold = Ynew
- If (Tnew > TempodapercorrereT.Text Or YnewINT > 500) Then
- InfoLabel.Text = "La sinusoide si è fermata, grafico completato. Premere RESET."
- Disegnatore.Stop()
- Button3.Enabled = False
- End If
- End Sub
- 'Testo delle informazioni in basso
- Private Sub Informante_Tick(sender As Object, e As EventArgs) Handles Informante.Tick
- Xvalore.Text = "X= " & Tnew - OrigineX
- Yvalore.Text = "Y= " & YnewINT - OrigineY
- End Sub
- 'FUNCTIONS
- Function angolo2radiante(ByVal angolo As Integer) As Double
- Dim risultato As Double
- risultato = (Math.PI * angolo) / 180
- Return risultato
- End Function
- Function disegnagrafico()
- Asse = PictureBox1.CreateGraphics
- Asse.DrawLine(Pens.LightGray, 0, OrigineY, 500, OrigineY)
- Asse.DrawLine(Pens.LightGray, OrigineX, OrigineY + 150, OrigineX, 0)
- Return 0
- End Function
- Function ResetGrafico()
- InfoLabel.Text = "Reset grafico in elaborazione..."
- Disegnatore.Stop()
- PictureBox1.Refresh()
- disegnagrafico()
- InfoLabel.Text = "Grafico pulito e ridisegnato."
- Return 0
- End Function
- '==================== CONTROLLI ANTI BUG ========================
- Private Sub RotazioneT_KeyPress(sender As Object, e As KeyPressEventArgs) Handles RotazioneT.KeyPress
- If (Not IsNumeric(e.KeyChar)) And (Asc(e.KeyChar) <> 8) Then 'FUNZIONE PER SOLI NUMERI
- e.Handled = True
- InfoLabel.Text = "Puoi scrivere solo numeri."
- End If
- End Sub
- Private Sub PeriodoT_KeyPress(sender As Object, e As KeyPressEventArgs) Handles PeriodoT.KeyPress
- If (Not IsNumeric(e.KeyChar)) And (Asc(e.KeyChar) <> 8) Then 'FUNZIONE PER SOLI NUMERI
- e.Handled = True
- InfoLabel.Text = "Puoi scrivere solo numeri."
- End If
- End Sub
- Private Sub AngoloSfasamentoT_KeyPress(sender As Object, e As KeyPressEventArgs) Handles AngoloSfasamentoT.KeyPress
- If (Not IsNumeric(e.KeyChar)) And (Asc(e.KeyChar) <> 8) Then 'FUNZIONE PER SOLI NUMERI
- e.Handled = True
- InfoLabel.Text = "Puoi scrivere solo numeri."
- End If
- End Sub
- Private Sub ValoreMassimoT_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ValoreMassimoT.KeyPress
- If (Not IsNumeric(e.KeyChar)) And (Asc(e.KeyChar) <> 8) Then 'FUNZIONE PER SOLI NUMERI
- e.Handled = True
- InfoLabel.Text = "Puoi scrivere solo numeri."
- End If
- End Sub
- Private Sub QuantoTempoT_KeyPress(sender As Object, e As KeyPressEventArgs) Handles QuantoTempoT.KeyPress
- If (Not IsNumeric(e.KeyChar)) And (Asc(e.KeyChar) <> 8) Then 'FUNZIONE PER SOLI NUMERI
- e.Handled = True
- InfoLabel.Text = "Puoi scrivere solo numeri."
- End If
- End Sub
- Private Sub TempodapercorrereT_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TempodapercorrereT.KeyPress
- If (Not IsNumeric(e.KeyChar)) And (Asc(e.KeyChar) <> 8) Then 'FUNZIONE PER SOLI NUMERI
- e.Handled = True
- InfoLabel.Text = "Puoi scrivere solo numeri."
- End If
- End Sub
- Private Sub PeriodoT_TextChanged(sender As Object, e As EventArgs) Handles PeriodoT.TextChanged
- If PeriodoT.Text = "0" Then 'Il periodo non può essere 0
- PeriodoT.Clear()
- InfoLabel.Text = "Non puoi impostare il periodo a 0."
- End If
- End Sub
- Private Sub QuantoTempoT_TextChanged(sender As Object, e As EventArgs) Handles QuantoTempoT.TextChanged
- If QuantoTempoT.Text = "0" Then
- InfoLabel.Text = "Attenzione: Non puoi inserire 0 tempo!"
- QuantoTempoT.Clear()
- End If
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement