Побудувати на формі графіки двох функцій: sin (x) та cos(x).
Значення лівої межі, правої межі та кроку вводимо у текстові поля.
При натисканні кнопки SIN будується графік функції y=sin(x). При натисканні кнопки COS будується графік функції y=cos(x).
При натисканні кнопки "Очистити" форма повністю очищається.
Розташуємо на формі текстові поля, написи та кнопки. Для побудови графіка використаємо елемент Chart з групи "Дані".
Результат:
Виділимо цей елемент та відкриємо його панель властивостей.
Деякі властивості:
Змінимо властивість Series для елемента chart1. Ця властивість описує серії даних, за якими ми будемо будувати графіки. Для цього натисніть на кнопку "...".
З'явиться вікно редактора колекції серій даних:
У нас буде два графіки в одній області, тому натисніть "Додати".
Тепер для кожної серії встановимо значення таких властивостей:
Перед тим, як ми напишемо обробники подій Click для кнопок, розглянемо деякі властивості, які ми будемо змінювати в програмі.
Графіки будуються на основі вмісту колекції Points. Ми будемо додавати значення в цю колекцію в процесі обчислення X та Y. Для цього ми використовуватимемо метод AddXY. Він додає одразу два значення: X та Y.
ChartAreas – масив областей, в яких будуються графіки. Використовуючи цю властивість, можна змінити стандартний вигляд.
А саме:
Axes – колекція осей області.
В тому числі, інтервал, на якому будується графік, та точки перетину осей. Ці властивості також будемо встановлювати в програмі.
public partial class Form1 : Form
{
private double a; // Початкове значення x
private double b; // Кінцеве значення x
private double h; // Крок
public Form1()
{
InitializeComponent();
InitializeChart(); // Додаткові налаштування графіка
}
private void InitializeChart()
{
// Ініціалізація серій та областей графіка, якщо вони не додані в дизайнері
if (chart1.Series.Count == 0)
{
chart1.Series.Add("Series0");
chart1.Series[0].ChartType = SeriesChartType.Line;
}
if (chart1.ChartAreas.Count == 0)
{
chart1.ChartAreas.Add(new ChartArea());
}
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
// Зчитування даних з перевіркою
if (!double.TryParse(textBox1.Text, out double a) ||
!double.TryParse(textBox2.Text, out double b) ||
!double.TryParse(textBox3.Text, out double h))
{
MessageBox.Show("Будь ласка, введіть коректні числові значення.", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (h <= 0)
{
MessageBox.Show("Крок (h) має бути більше нуля.", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (a > b)
{
MessageBox.Show("Початкове значення (a) має бути менше або дорівнювати кінцевому (b).", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// Перевірка наявності серії та області графіка
if (chart1.Series.Count == 0 || chart1.ChartAreas.Count == 0)
{
MessageBox.Show("Графік не ініціалізовано. Додайте серію та область графіка.", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// Очищення графіка перед побудовою
chart1.Series[0].Points.Clear();
// Налаштування осей (приклад)
chart1.ChartAreas[0].AxisX.Minimum = a;
chart1.ChartAreas[0].AxisX.Maximum = b;
chart1.ChartAreas[0].AxisX.Interval = (b - a) / 10; // Автоматичний інтервал
// Побудова графіка
for (double x = a; x <= b; x += h)
{
chart1.Series[0].Points.AddXY(x, Math.Sin(x));
}
// Оновлення графіка
chart1.Update();
}
catch (Exception ex)
{
MessageBox.Show($"Сталася помилка: {ex.Message}", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
// Зчитування даних з перевіркою
double a, b, h;
if (!double.TryParse(textBox1.Text, out a) ||
!double.TryParse(textBox2.Text, out b) ||
!double.TryParse(textBox3.Text, out h))
{
MessageBox.Show("Будь ласка, введіть коректні числові значення.");
return;
}
if (h <= 0)
{
MessageBox.Show("Крок (h) має бути більше нуля.");
return;
}
if (a > b)
{
MessageBox.Show("Початкове значення (a) має бути менше або дорівнювати кінцевому (b).");
return;
}
// Перевірка наявності серії та області графіка
if (chart1.Series.Count <= 1 || chart1.ChartAreas.Count <= 1)
{
MessageBox.Show("Графік або серія не ініціалізовані.");
return;
}
// Очищення серії перед побудовою
chart1.Series[1].Points.Clear();
// Налаштування осей (приклад)
chart1.ChartAreas[1].AxisX.Minimum = a;
chart1.ChartAreas[1].AxisX.Maximum = b;
chart1.ChartAreas[1].AxisX.Interval = h;
// Побудова графіка
for (double x = a; x <= b; x += h)
{
chart1.Series[1].Points.AddXY(x, Math.Cos(x));
}
}
catch (Exception ex)
{
MessageBox.Show($"Сталася помилка: {ex.Message}");
}
}
private void button3_Click(object sender, EventArgs e)
{
// Очищення графіків
if (chart1.Series.Count > 0)
{
chart1.Series[0].Points.Clear();
if (chart1.Series.Count > 1)
{
chart1.Series[1].Points.Clear();
}
}
// Очищення текстових полів
foreach (var textBox in new[] { textBox1, textBox2, textBox3 })
{
textBox.Text = string.Empty;
}
}