Создание круговой диаграммы на C#
В этом материале мы сосредоточимся на создании круговой диаграммы с использованием Microsoft .NET Framework. При этом мы будем использовать классы в пространстве имен System.Drawing.
Зачем?
Диаграммы и/или графики могут быть весьма полезны в программах Windows и веб-приложениях для наглядного отображения информации и статистики. Есть инструменты, такие как Crystal Reports, которые могут быть использованы для создания отчетов. Также есть инструменты, такие как Chart FX, Dundas Chart и TeeChart, которые позволят вам создавать отличные диаграммы и графики для отображения в ваших программах. Тем не менее, эти приложения платные, не всегда возможно их приобрести. Так что давайте научимся с помощью классов в пространстве имен System.Drawing в Microsoft .NET Framework самостоятельно создавать для начала круговую диаграмму.
Основные этапы
Создание диаграммы или графика с помощью платформы Microsoft .NET проще, чем можно было бы ожидать. Степень сложности графика основана на сложности информации, которую вы пытаетесь отобразить и форму, которую вы пытаетесь использовать, чтобы отобразить его.
Основные этапы создания диаграммы или графика следующие:
- Создайте новое изображение в нужном формате.
- Нарисуйте желаемую форму, используя классы рисования в пространстве имен System.Drawing.
- Сохраните изображение в поток (память, файл, и так далее), так чтобы оно потом могло быть использовано.
В следующем примере класс демонстрирует, как создать динамическое изображение, которое содержит круговую диаграмму. Он принимает цвет фона, ширину, высоту и массив десятичных значений в качестве входных данных. Cуммируем значения и рисуем круговую диаграмму для каждого значения в процентах от общего количества. Каждая секция диаграммы будет нарисована в одном из десяти цветов.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; namespace Graph { //<summary> //Нарисовать круговую диаграмму, используя данную информацию. //</summary> public partial class Form1 : Form { public Bitmap Draws(Color bgCol, int width, int height, decimal[] vals) { // Создаем новый образ и стираем фон Bitmap mybit = new Bitmap(width, height, PixelFormat.Format32bppArgb); Graphics graphics = Graphics.FromImage(mybit); SolidBrush brush = new SolidBrush(bgCol); graphics.FillRectangle(brush, 0, 0, width, height); brush.Dispose(); // Создаем кисти для окрашивания на круговой диаграмме SolidBrush[] brush2 = new SolidBrush[10]; brush2[0] = new SolidBrush(Color.Yellow); brush2[1] = new SolidBrush(Color.Green); brush2[2] = new SolidBrush(Color.Blue); brush2[3] = new SolidBrush(Color.Cyan); brush2[4] = new SolidBrush(Color.Magenta); brush2[5] = new SolidBrush(Color.Red); brush2[6] = new SolidBrush(Color.Black); brush2[7] = new SolidBrush(Color.Gray); brush2[8] = new SolidBrush(Color.Maroon); brush2[9] = new SolidBrush(Color.LightBlue); // Сумма для получения общего decimal all = 0.0m; foreach (decimal val in vals) all += val; // Рисуем круговую диаграмму float startZ = 0.0f; float endZ = 0.0f; decimal current = 0.0m; for (int i = 0; i < vals.Length; i++) { current += vals[i]; startZ = endZ; endZ = (float)(current / all) * 360.0f; graphics.FillPie(brush2[i % 10], 0.0f, 0.0f, width,height, startZ, endZ - startZ); } // Очищаем ресурсы кисти foreach (SolidBrush cleanBrush in brush2) cleanBrush.Dispose(); return mybit; } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void Form1_Paint_1(object sender, PaintEventArgs e) { Color myColor = Color.FromArgb(255, 255, 255);//Задаем белый цвет для фона decimal[] vals = { 33, 25, 12, 10, 11, 9 };//Массив значений, числа могут быть любыми, не обязательно в сумме давать 100 Bitmap myBitmap = Draws(myColor, 300, 300, vals);//Создаем картинку Graphics g = e.Graphics; g.DrawImage(myBitmap, 5, 5); //Выводим круговую диаграмму на экран в нужных координатах } } }В итоге у вас должно получиться что-то типа этого:
Комментарии к листингу достаточно подробные, так что все должно быть понятно. Вот так просто можно сделать круговую диаграмму с помощью .NET Framework. Если у вас возникли вопросы, необходимо написать программу на заказ для лабораторной, курсовой, дипломной или практической работы - обращайтесь. Низкие цены, быстрое выполнение, высокое качество, гарантированный результат.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.