Вот правильный код:
// keep your data at class level:
// lists are more flexible than arrays:
List<Point> pts = new List<Point>();
// all drawing in the paint event:
private void Form1_Paint(object sender, PaintEventArgs e)
{
// put the pen creation in a using scope:
using (Pen Pen = new Pen(Color.Red, 3f))
{
// make the corners nicer:
pen.MiterLimit = pen.Width/2f;
// drawing all lines in one call greatly improves quality.
// we need at least two points:
if (pts.Count > 1) e.Graphics.DrawLines(Pen, pts);
}
}
// trigger the drawing when needed, eg when you have added more points:
private void button1_Click(object sender, EventArgs e)
{
// maybe add more points..
pts.AddRange(new Point[]
{ new Point(150, 12), new Point(130, 15), new Point(160, 18) });
// trigger the paint event
this.Invalidate();
}
Рассмотрим рисунок на Panel
! Это позволит вам перемещать его и размещать все элементы управления независимо от вашего Form
.
Если вы серьезно относитесь к созданию диаграммы, подумайте об использовании элемента управления в ящике данных на панели инструментов!
В нем есть все, что нужно для реального графика, включая маркированные оси и многообразный дисплей.
Чтобы использовать ваши данные все, что требуется в эти несколько строк:
using System.Windows.Forms.DataVisualization.Charting;
//..
private void button2_Click(object sender, EventArgs e)
{
chart1.Legends.Clear();
chart1.Series[0].ChartType = SeriesChartType.FastLine;
chart1.Series[0].Color = Color.Red;
chart1.Series[0].BorderWidth = 3;
chart1.Series[0].Points.AddXY(130, 15);
chart1.Series[0].Points.AddXY(150, 12);
chart1.Series[0].Points.AddXY(160, 18);
}
Обратите внимание, что я упорядоченные точки, но это не является необходимым для всех charttypes. Я использую Fastline и с вашим оригинальным заказом работает. Он может даже отображать несколько точек с той же X-Value ..! И проклятие автоматически масштабируется.
Также обратите внимание, что на диаграмме отображаются Y-значения естественным образом, то есть снизу вверх, тогда как GDI рисует сверху вниз!
Вот скриншот из обоих способов показать таблицу:
Где примера изображения диаграммы идут? –