Zu deiner Info, die Zeile:Dim PWidth, PHeight, I, k, m, r, XLabeli, XLabelii, XLabeliii, htime As Integer legt nur htime als Integer an. Die anderen werden als Variant angelegt.
Setz mal einen Breakpoint und gib mal in das "Immdediate Window/ Direktfenster" ?TypeName(htime), bzw ?TypeName(I) ein.
Du musst schreiben:Dim I As Integer, k As Integer, ...... Davon abgesehen würde ich Variablen die nur innerhalb einer Prozedur verwendet werden auch dort definieren. Sind in dem geposteten Bsp. alle .
Dann solltest du innerhalb der Paint-Funktion nur zeichnen nicht rechnen. Ich verstehe nicht, wieso du eine Schleife k = 1 to 2000 hast? Bei mir kommt da nur schwarzer Brei. Ich hab's mal so umgeschrieben:Option Explicit
Dim PWidth As Integer, PHeight As Integer, I As Integer, k As Integer
Dim m As Integer, r As Integer, XLabeli As Integer, XLabelii As Integer, _
XLabeliii As Integer
Dim htime As Integer
Dim StepW As Double, StepH As Double
Dim sumVector(1 To 1000, 1 To 2000) As Double
Private Const Pi As Double = 3.14159265358979
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
Dim y As Double
Dim x As Double
Dim p As PictureBox
Set p = Picture1
p.Scale (0, 2)-(1000, -2)
p.AutoRedraw = True
p.DrawStyle = 2
PWidth = p.ScaleWidth
PHeight = p.ScaleHeight
StepW = PWidth / 10
StepH = PHeight / 10
For I = 1 To 10
y = p.ScaleTop + I * StepH
x = p.ScaleLeft + I * StepW
Picture1.Line (p.ScaleLeft, y)-(p.ScaleLeft + p.ScaleWidth, y), RGB(131, _
130, 129)
Picture1.Line (x, p.ScaleTop)-(x, p.ScaleTop + p.ScaleHeight), RGB(131, _
130, 129)
Next I
Picture1.AutoRedraw = False ' alles was zwischen AutoRedraw = True und
' AutoRedraw = False gezeichnet wurde, ist jetzt Teil der Hintergrundbitmap
InitVects 'Einmal rechnen, Ergebnisse sind ja eh immer gleich
End Sub
Private Sub InitVects()
Me.MousePointer = vbHourglass
Picture1.MousePointer = Me.MousePointer
For k = 1 To 2000
For r = 1 To 1000
sumVector(r, k) = Sin((r + k) * (Pi / 8 * k))
Next r
Next k
Me.MousePointer = vbDefault
Picture1.MousePointer = Me.MousePointer
End Sub
Private Sub Picture1_Paint()
Me.MousePointer = vbHourglass
Picture1.MousePointer = Me.MousePointer
htime = 0.5
'???
XLabeli = 0
XLabelii = 5 * htime
XLabeliii = 10 * htime
Picture1.DrawStyle = 0
For k = 1 To 1 'Jetzt sieht man einen Sinus und keinen Brei
Picture1.PSet (1, sumVector(1, k))
For m = 2 To 1000
Picture1.Line -(m, sumVector(m, k))
Next m
Label5.Caption = Format(k, "0")
Label5.Refresh
If k Mod 10 Then DoEvents
Next k
'???
Label1.Caption = Format(XLabeli, "0.0")
Label2.Caption = Format(XLabelii, "0.0000")
Label3.Caption = Format(XLabeliii, "0.0000")
Me.MousePointer = vbDefault
Picture1.MousePointer = Me.MousePointer
End Sub Gruß
Dirk
--
?Get it right the first time  |