В событии нажатия кнопки:
private void chart1_MouseClick(object sender, MouseEventArgs e)
{
if (outofrange == false)
{
valuePoints.Add(new PointF(X, Y));
paintToCalaculate = true;
if (X > 0 && Y > 0)
{
chart1.Invalidate();
SavePointsCoordinates();
}
}
}
И метод SavePointsCoordinates:
StreamWriter w;
int countPoints = 0;
private void SavePointsCoordinates()
{
if (drawPoints.Count > 0)
{
foreach (Point p in drawPoints)
{
countPoints++;
w = new StreamWriter(@"c:\chart\chartData.txt",true);
w.WriteLine("Point " + countPoints + "X = " + p.X + " Y = " + p.Y);
}
w.Close();
}
}
Проблема в том, что если я нажму кнопку более одного раза, не добавляя новые точки, он будет продолжать добавлять в текстовый файл одни и те же координаты.
На самом деле это уже добавление одних и тех же координат точки к valuePoints в событии нажатия кнопки. valuePoints — это список
А drawPoints — это список, который я использую в событии рисования chart1:
Pen pen = new Pen(Color.Blue, 2.5f);
SolidBrush myBrush = new SolidBrush(Color.Red);
private void chart1_Paint(object sender, PaintEventArgs e)
{
if (paintToCalaculate)
{
Series s = chart1.Series.FindByName("dummy");
if (s == null)
{
s = chart1.Series.Add("dummy");
}
drawPoints.Clear();
s.Points.Clear();
foreach (PointF p in valuePoints)
{
s.Points.AddXY(p.X, p.Y);
DataPoint pt = s.Points[0];
double x = chart1.ChartAreas[0].AxisX.ValueToPixelPosition(pt.XValue);
double y = chart1.ChartAreas[0].AxisY.ValueToPixelPosition(pt.YValues[0]);
drawPoints.Add(new Point((int)x, (int)y));
s.Points.Clear();
}
paintToCalaculate = false;
chart1.Series.Remove(s);
}
foreach (Point p in drawPoints)
{
e.Graphics.FillEllipse(Brushes.Red, p.X - 2, p.Y - 2, 4, 4);
}
if (drawPoints.Count > 1)
{
e.Graphics.DrawLines(pen, drawPoints.ToArray());
}
}
Что я хочу сделать, так это записать все координаты точек, которые я рисую на диаграмме, в текстовый файл, а затем в конструкторе, чтобы прочитать текстовый файл, нарисовать точки обратно на диаграмму, а также нарисовать линии между ними.
Я не уверен, есть ли смысл в порядке точек и линий между ними, которые я рисую. Просто записать все координаты в текстовый файл и прочитать обратно.