Sub DrawAreaChart(G As Graph, LD As LineData, BackColor As Int)
Dim aree As Map
If Not(aree.IsInitialized) Then
aree.Initialize
aree.Clear
End If
If LD.Points.Size = 0 Then
ToastMessageShow("Missing line points.", True)
Return
End If
LD.Canvas.Initialize(LD.Target)
LD.Canvas.DrawColor(BackColor)
If LD.AutomaticScale = True Then
GetLineMinMaxValues(LD)
CalcScale(G, LD)
End If
drawGraph(G, LD.Canvas, LD.Target, LD.Points, False, 0)
'Draw data lines
Dim point As LinePoint
point = LD.Points.Get(0)
'multiple lines
Dim py2(point.YArray.Length) As Double
'initialize first point
For i = 0 To py2.Length - 1
py2(i) = point.YArray(i)
Next
'draw all points
For i = 1 To LD.Points.Size - 1
point = LD.Points.Get(i)
For a = 0 To py2.Length - 1
If aree.ContainsKey(LD.LinesColors.Get(a)) Then
Dim linee As Path
linee = aree.Get(LD.LinesColors.Get(a))
linee.LineTo(G.GI.originX + G.GI.intervalX * i, calcPointToPixel(point.YArray(a), G))
If i = LD.Points.Size-1 Then
linee.LineTo(G.GI.originX + G.GI.intervalX * i, G.GI.originY)
End If
aree.Put(LD.LinesColors.Get(a), linee)
Else
Dim linee As Path
linee.Initialize(G.GI.originX + G.GI.intervalX * (i - 1), G.GI.originY)
linee.LineTo(G.GI.originX + G.GI.intervalX * (i - 1), calcPointToPixel(py2(a), G))
linee.LineTo(G.GI.originX + G.GI.intervalX * i, calcPointToPixel(point.YArray(a), G))
aree.Put(LD.LinesColors.Get(a), linee)
End If
py2(a) = point.YArray(a)
Next
Next
For i=0 To aree.Size-1
LD.Canvas.DrawPath(aree.GetValueAt(i), Colors.Transparent, True, 2dip)
LD.Canvas.DrawPath(aree.GetValueAt(i), aree.GetKeyAt(i), True, 2dip)
Next
drawGraph(G, LD.Canvas, LD.Target, LD.Points, False, 0)
LD.Target.Invalidate
End Sub