[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
В этой статье, мы рассмотрим как построить график в Windows Forms приложениях, а так же в Console App.
Для построения графика в C# Windows Forms, можно использовать библиотеку диаграмм, например, встроенную библиотеку System.Windows.Forms.DataVisualization.Charting. Вот пример кода для создания простого линейного графика:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System.Windows.Forms.DataVisualization.Charting; // Create a new chart object Chart chart = new Chart(); chart.Size = new System.Drawing.Size(600, 400); // Set up the chart area ChartArea chartArea = new ChartArea(); chartArea.AxisX.Title = "X Axis"; chartArea.AxisY.Title = "Y Axis"; chart.ChartAreas.Add(chartArea); // Add a series to the chart Series series = new Series(); series.ChartType = SeriesChartType.Line; series.Name = "My Series"; series.Points.AddXY(1, 10); series.Points.AddXY(2, 20); series.Points.AddXY(3, 30); series.Points.AddXY(4, 25); series.Points.AddXY(5, 35); series.Points.AddXY(6, 40); series.Points.AddXY(7, 30); series.Points.AddXY(8, 50); series.Points.AddXY(9, 45); series.Points.AddXY(10, 55); chart.Series.Add(series); // Display the chart in a new form Form form = new Form(); form.Controls.Add(chart); form.Show(); |
Этот код создает простой линейный график с 10 точками данных, шириной 600 пикселей и высотой 400 пикселей. Он устанавливает область графика с заголовками осей X и Y и добавляет на график линейный ряд с точками данных. Наконец, он отображает график в новой форме.
Обратите внимание, что этот подход требует наличия графического интерфейса пользователя для отображения графика. Если вам нужно создать график в консольном приложении, вы можете использовать символы ASCII для представления точек данных на графике.
Уважаемые энтузиасты программирования на C#!
С наилучшими пожеланиями,
[Леонид / Dijix Company]
Консольное приложение
Если необходимо построить график в консольном приложении, это можно сделать используя псевдографику, это не сложно. Второй вариант — использовать библиотеку System.Drawing и рисовать как на форме. Вот небольшой пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
class Program { [DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("kernel32.dll")] public static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] public static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDc); [DllImport("gdi32.dll")] static extern IntPtr DeleteDC(IntPtr hDc); static IntPtr hWnd = IntPtr.Zero; static IntPtr hDC = IntPtr.Zero; static void Main(string[] args) { hWnd = GetConsoleWindow(); if (hWnd != IntPtr.Zero) { hDC = GetDC(hWnd); if (hDC != IntPtr.Zero) { using (Graphics consoleGraphics = Graphics.FromHdc(hDC)) { Pen whitePen = new Pen(Color.White); Pen redPen = new Pen(Color.Red, 2); Font font = new Font("verdana", 13); consoleGraphics.DrawLine(whitePen, new Point(0, 30), new Point(300, 30)); consoleGraphics.DrawLine(whitePen, new Point(30, 0), new Point(30, 300)); consoleGraphics.DrawString("X", font, Brushes.White, 310, 10); consoleGraphics.DrawString("Y", font, Brushes.White, 40, 250); consoleGraphics.DrawString("График функции : y = x + 2", font, Brushes.White, 80, 60); int y = 0; int x = 100; for (; x < 250; x++) { y = x + 2; consoleGraphics.DrawRectangle(redPen, x, y, 2, 2); } font.Dispose(); whitePen.Dispose(); redPen.Dispose(); } } ReleaseDC(hWnd, hDC); DeleteDC(hDC); } Console.ReadKey(); } } |
Этот фрагмент кода подключает набор методов C#, которые используют атрибут DllImport для указания внешних функций, импортируемых из четырех различных библиотек динамических связей (DLL) Windows: user32.dll, kernel32.dll, gdi32.dll.
Вот что делает каждый метод:
- GetDC: Этот метод импортируется из user32.dll и принимает параметр IntPtr, который представляет собой хэндл окна. Он возвращает IntPtr-ручку контекста устройства (DC) для данного окна.
- GetConsoleWindow: Этот метод импортируется из kernel32.dll и не принимает никаких параметров. Он возвращает хэндл IntPtr к консольному окну вызывающего процесса.
- ReleaseDC: Этот метод импортирован из user32.dll и принимает два параметра IntPtr: хэндл окна и хэндл контекста устройства. Он освобождает контекст устройства, который был получен ранее вызовом GetDC.
- DeleteDC: Этот метод импортируется из gdi32.dll и принимает параметр IntPtr, представляющий собой хэндл контекста устройства. Он удаляет заданный контекст устройства.
Эти методы необходимы, что бы была возможность рисовать, используя графику как в Windows Forms.
Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.
Так же вам может быть интересна предыдущая статья — Как создать безразмерный массив.
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.