RuZleBIFf Skrevet 28. mai 2005 Del Skrevet 28. mai 2005 God natt! Jeg sitter her og kjeder meg noe skikkelig! så tenkte jeg skulle få vb til å tegne en fin sinus-kurve for meg! men dette var vist ikke like lett som jeg hadde håpet på. er det noen som veit hvordan jeg kan gjøre dette? Og siden Me.line skal ha negative koordinater, hvordan blir det da? for sinuskurven har jo halvparten over 0! Jaja.. håper noen kan hjelpe meg! Lenke til kommentar
Jonas Skrevet 28. mai 2005 Del Skrevet 28. mai 2005 Koden er sikkert verdens verste (Brukte ikke så land tid), men du får se om du skjønner noe av den. Litt stolt ettersom jeg verken kan Sin, Tan eller Cos. Sinus_kurve2.zip Lenke til kommentar
Jonas Skrevet 28. mai 2005 Del Skrevet 28. mai 2005 Her er en versjon med flere punkter og linjer. (Og enda verre kode..) Sinus_kurve.zip Lenke til kommentar
aadnk Skrevet 28. mai 2005 Del Skrevet 28. mai 2005 Dersom du vil tegne dette inn i et koordinatsstem, kan du eksempelvis gjøre det således: Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Sub DrawFormular(PicBox As PictureBox, sFormular As String, lngWait As Long, dblXAxis As Double, dblYAxis As Double, Optional dblAccuracy As Double = 1) Dim ScriptEngine As Object, X As Double, currY As Double, lastY As Double Dim lngOrigoX As Long, lngOrigoY As Long ' Referer skriptmotor til variabel Set ScriptEngine = CreateObject("MSScriptControl.ScriptControl") ' Initialiser motor ScriptEngine.Language = "VBScript" ScriptEngine.AddCode "Function Y(X)" & vbCrLf & sFormular & vbCrLf & "End Function" ' Beregn posisjon til origo lngOrigoX = PicBox.ScaleWidth / 2 lngOrigoY = PicBox.ScaleHeight / 2 ' Tegn akser PicBox.Line (lngOrigoX, 0)-(lngOrigoX, PicBox.ScaleHeight), vbBlack PicBox.Line (0, lngOrigoY)-(PicBox.ScaleWidth, lngOrigoY), vbBlack ' Start opptegningen For X = -dblAccuracy To PicBox.ScaleWidth Step dblAccuracy ' Regn ut Y-verdi currY = lngOrigoY - (ScriptEngine.Run("Y", X - lngOrigoX / dblXAxis) * dblYAxis) ' Tegn opp punkt på bakgrunn av foregående punkt PicBox.Line (X * dblXAxis, currY)-((X - dblAccuracy) * dblXAxis, lastY), vbBlack ' Lagre verdi til neste opptegning lastY = currY ' Utfør dette kun dersom vent-verdien er spesifisert If lngWait >= 0 Then ' Oppdater PicBox DoEvents ' Vent i angitt tid Sleep lngWait End If Next End Sub Private Sub Form_Load() ' Vis form Show ' Start opptegningsprosedyren DrawFormular picGraph, "Y = Sin(X)", 10, Me.ScaleWidth / 4, Me.ScaleHeight / 4, 0.01 End Sub Private Sub Form_Unload(Cancel As Integer) ' Terminer applikasjon End End Sub Lenke til kommentar
RuZleBIFf Skrevet 28. mai 2005 Forfatter Del Skrevet 28. mai 2005 ' Start opptegningsprosedyren DrawFormular picGraph, "Y = Sin(X)", 10, Me.ScaleWidth / 4, Me.ScaleHeight / 4, 0.01 Der får jeg feil i picGraph! skal jeg bare ha en blank form? Lenke til kommentar
Jonas Skrevet 28. mai 2005 Del Skrevet 28. mai 2005 (endret) Nei, du må sette en en PictureBox med navn 'picGraph'. Edit: aadnk, hvorfor valgte du å lage en funksjon med VB-skript? Man trenger vel egentlig ikke en egen funksjon for det i det hele tatt? Endret 28. mai 2005 av Jonas Lenke til kommentar
aadnk Skrevet 28. mai 2005 Del Skrevet 28. mai 2005 Edit: aadnk, hvorfor valgte du å lage en funksjon med VB-skript? Man trenger vel egentlig ikke en egen funksjon for det i det hele tatt? Naturligvis ikke, men en slik fremgangsmåte forenkler og allsidiggjør programmeringsprosessen. Dersom en nå har ønske om å implementere mer dynamikk i programmet, eksempelvis ved å la brukeren selv spesifisere formelen som skal opptegnes, blir dette særdeles enkelt gjennomføre. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå