Sub Draw(MinX As Double, MaxX As Double, MinY As Double, MaxY As Double)
Dim NbPoints = 200 As Int
Dim ScaleX, ScaleY As Double
Dim i, xmax, ymax, x1, x2, y0, y1, y2 As Int
Dim dx, dy1, dy2, valx1, valx2, valy1, valy2, valdx, valdy2 As Double
Dim rectDraw As Rect
xmax = pnlDraw.Width
ymax = pnlDraw.Height
rectDraw.Initialize(0, 0, xmax, ymax)
cvsDraw.DrawRect(rectDraw, Colors.White, True, 1)
ScaleX = pnlDraw.Width / (MaxX - MinX)
ScaleY = pnlDraw.Height / (MaxY - MinY)
valdx = (MaxX - MinX) / NbPoints
dx = xmax / NbPoints
y0 = ymax + MinY * ScaleY
If MinX < 0 AND MaxX > 0 Then
cvsDraw.DrawLine(-MinX * ScaleX, 0, -MinX * ScaleX, ymax, Colors.Black, 1dip)
End If
If MinY < 0 AND MaxY > 0 Then
cvsDraw.DrawLine(0, ymax + MinY * ScaleY, xmax, ymax + MinY * ScaleY, Colors.Black, 1dip)
End If
For i = 0 To NbPoints - 1
If i = 0 Then
valx1 = MinX
valy1 = Func(valx1)
x1 = 0
y1 = y0 - valy1 * ScaleY
End If
x2 = (i + 1) * dx
valx2 = MinX + (i + 1) * valdx
valy2 = Func(valx2)
y2 = y0 - valy1 * ScaleY
cvsDraw.DrawLine(x1, y1, x2, y2, Colors.Blue, 1dip)
valdy2 = (valy2 - valy1) / valdx
dy2 = y0 - valdy2 * ScaleY
If i = 0 Then
dy1 = dy2
End If
cvsDraw.DrawLine(x1, dy1, x2, dy2, Colors.Red, 1dip)
valy1 = valy2
x1 = x2
y1 = y2
dy1 = dy2
Next
pnlDraw.Invalidate
End Sub