Создание круговой диаграммы на 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты