Как можно добавить координатную ось на этот график?
У меня было задание построить график функции при помощи массива точек. Это есть.
Как можно отрисовать координатную ось?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace pr14
{
public partial class Form2 : Form
{
protected override void OnPaint(PaintEventArgs e)
{
// интервал
const int minX = -2;
const int maxX = 5;
PointF[] points = new PointF[maxX - minX];
for (int i = 0; i < points.Length; i++)
{
float x = i + minX;
if (x <= 3)
points[i] = new PointF(x, 2 - x);
else points[i] = new PointF(x, x * x);
}
//нормирование точек
float w = this.ClientSize.Width;
float h = this.ClientSize.Height;
float minY = points[0].Y;
float maxY = points[0].Y;
for (int i = 1; i < points.Length; i++)
{
if (minY > points[i].Y) minY = points[i].Y;
if (maxY < points[i].Y) maxY = points[i].Y;
}
for (int i = 0; i < points.Length; i++)
{
points[i].X = w * (points[i].X - minX) / (maxX - minX);
points[i].Y = h - h * (points[i].Y - minY) / (maxY - minY);
}
e.Graphics.DrawLines(Pens.Blue, points);
}
}
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Для оси OX нарисуйте линию с Y-координатой
h - h * (0 - minY) / (maxY - minY);
Начальная точка с X-координатой 0, конечная c w
Для оси OY X-координата будет
w * (0 - minX) / (maxX - minX);