One thing I’ve gotten much better at the longer i’ve been at ComponentOne is naming my projects. Every new project I create now gets nicely categorized in a proper directory and gets a descriptive name. I have saved about 700 VS2005 and VS2008 projects and some of them are poorly named. I’m not nearly as bad as those guys who have a project named WindowsApplication346, but I get into the habit of naming them like “ChartTest” or “ChartProject” which helps narrow it down to the main C1 control in use but it’s vague beyond that. Today I was looking through those old projects for a sample I made years ago for C1Chart in WinForms to help a customer. I never did find the sample I was looking for, but I stumbled upon this one which I thought was kind of neat.

It draws points on a C1Chart by clicking and dragging. Sort of like MS Paint. Then I have no idea why I output the points into textboxes on either side, but it looks cool.

Looking at the code it’s so simple. First I declared a Boolean variable to hold a true value when the user is pressing on the chart with the mouse.

Dim drawing As Boolean

Private Sub C1Chart1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1Chart1.MouseDown
    drawing = True
End Sub

Private Sub C1Chart1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1Chart1.MouseUp
    drawing = False
End Sub

Then in the MouseMove event I add points at the mouse coordinates while the user is pressing the mouse. It’s that simple.

Private Sub C1Chart1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1Chart1.MouseMove
    If drawing Then
        Dim p As New PointF
        'convert client coords to point coords
        C1Chart1.ChartGroups(0).CoordToDataCoord(e.X, e.Y, p.X, p.Y)
        'add point
        C1Chart1.ChartGroups(0).ChartData.SeriesList(0).PointData.Add(p)
    End If
End Sub

I figured this type of sample could possibly have a use in a real world app, though I’m not quite sure what that would be.

Download Sample

Tags: ,