Я ищу решение, чтобы заполнить пространство между точками, как видно на изображении. Я использую функцию диаграммы в c#. net для размещения точек, но она окрашивает пространство от 3 до 5, а не от 3 до 4. Возможно ли закрашивать пространство только внутри созданной фигуры ? выходное изображение
Вот пример кода, который я использую для создания диаграммы и раскраски пространства:
private void UpdateChart(List<Point> curve)
{
int y = 0;
var list = curve.ToList();
int count = list.Count - 2;
for (int i = 0; i < count; i++)
{
int x0 = list[i + 0].X;
int y0 = list[i + 0].Y;
int x1 = list[i + 1].X;
int y1 = list[i + 1].Y;
if ((y0 > y && y1 < y) || (y0 < y && y1 > y))
{
int x = (y - y0) * (x1 - x0) / (y1 - y0) + x0;
list.Add(new Point(x, y));
}
}
list.Sort((a, b) => Math.Sign(a.X - b.X));
chart1.Series[0].Points.Clear();
chart1.Series[0].ChartType = SeriesChartType.Range;
chart1.Series[0].Color = Color.Red;
chart1.Series[0].BorderColor = Color.Cyan;
chart1.ChartAreas[0].AxisX.Minimum = 0;
chart1.ChartAreas[0].AxisX.Interval = 1;
for (int i = 0; i < list.Count; i++)
{
double xx = list[i].X;
double yy = list[i].Y;
if (yy > y)
{
chart1.Series[0].Points.AddXY(xx, y, yy);
}
else
{
chart1.Series[0].Points.AddXY(xx, yy, yy);
}
}
chart1.ChartAreas[0].AxisY.StripLines.Add(new StripLine { IntervalOffset = y, Interval = 0, BorderColor = Color.Orange, BorderWidth = 2 });
}
private void CreateChart()
{
chart1.Series.Clear();
var series = new Series("Pierwszy Zbiór");
var series1 = new Series("Drugi Zbiór");
var series2 = new Series("Wynik");
series.ChartType = SeriesChartType.Line;
series1.ChartType = SeriesChartType.Line;
series2.ChartType = SeriesChartType.Line;
List<Point> points = new List<Point>();
points.Add(new Point(Convert.ToInt32(textBox1.Text), 0));
points.Add(new Point(Convert.ToInt32(textBox2.Text), 1));
points.Add(new Point(Convert.ToInt32(textBox3.Text), 1));
points.Add(new Point(Convert.ToInt32(textBox4.Text), 0));
int licznik = 0;
foreach (Point element in points)
{
series.Points.AddXY(element.X, element.Y);
licznik++;
}
chart1.Series.Add(series);
List<Point> wynik = new List<Point>();
UpdateChart(points);
}