﻿Public Class PatientDietProgressChart
    Inherits RyChart.PointChart


    Protected Overrides Sub DrawLegend(ByVal g As System.Drawing.Graphics)
        MyBase.DrawLegend(g)

        g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
        For Each ds As DataSet In Me.Data
            If ds.Data.Count > 1 Then
                Using b As New SolidBrush(ds.Color)
                    Dim dX As Double = (Me.ClientSize.Width - Me.Padding.Left - Me.Padding.Right) / (ds.Data.Count - 1)
                    Dim dY As Double = (Me.ClientSize.Height - Me.Padding.Top - Me.Padding.Bottom) / (Me.Maximum - Me.Minimum) * (ds.Data(1) - Me.Minimum) - (Me.ClientSize.Height - Me.Padding.Top - Me.Padding.Bottom) / (Me.Maximum - Me.Minimum) * (ds.Data(0) - Me.Minimum)
                    Dim angle As Double = Math.Atan2(dY, dX)
                    Dim labelSize As SizeF = g.MeasureString(ds.Name, Me.Font)
                    g.TranslateTransform(Me.Padding.Left, CSng(Me.ClientSize.Height - Me.Padding.Bottom - (Me.ClientSize.Height - Me.Padding.Top - Me.Padding.Bottom) / (Me.Maximum - Me.Minimum) * (ds.Data(0) - Me.Minimum)))
                    g.RotateTransform(CSng(-angle * 180 / Math.PI))
                    g.TranslateTransform(CSng(dX / 2.0# - labelSize.Width / 2.0#), -labelSize.Height)
                    g.DrawString(ds.Name, Me.Font, b, 0.0!, 0.0!)
                    g.ResetTransform()
                End Using
            End If

            Using b As New SolidBrush(ds.Color)
                For i As Integer = 0 To ds.Data.Count - 1
                    Dim x As Integer = CInt((Me.ClientSize.Width - Me.Padding.Left - Me.Padding.Right) / (ds.Data.Count - 1) * i)
                    Dim y As Integer = CInt((Me.ClientSize.Height - Me.Padding.Top - Me.Padding.Bottom) / (Me.Maximum - Me.Minimum) * (ds.Data(i) - Me.Minimum))
                    Dim pointTextSize As SizeF = g.MeasureString(ds.Data(i).ToString(), Me.Font)

                    g.DrawString(ds.Data(i).ToString(), Me.Font, b, x - pointTextSize.Width / 2.0! + Me.Padding.Left, Me.ClientSize.Height - Me.Padding.Bottom - y - pointTextSize.Height - 2.0!)
                Next
            End Using
        Next
        g.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
    End Sub
End Class