[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на 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 і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах