C#是一种强大的编程语言,它提供了许多图形编程工具,其中包括Graphics类。Graphics类可以用于创建各种图形,包括扇形图
下面是一个简单的示例,演示如何使用C#的Graphics类生成扇形图:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace GraphicsDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
// 设置扇形的颜色
SolidBrush brush = new SolidBrush(Color.Red);
// 绘制扇形
g.FillPie(brush, 50, 50, 100, 100, 0, 90);
// 添加文本
Font font = new Font("Arial", 12);
brush = new SolidBrush(Color.Black);
g.DrawString("扇形图", font, brush, 60, 120);
}
}
}
使用了FillPie方法来绘制扇形。该方法需要指定扇形的颜色、位置、大小和起始角度等参数
下面写一个复杂的例子,比如给了一个集合,为每一个实体写一个扇形图.
实体信息如下:
public class StatCount
{
/// <summary>
/// 名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 数量
/// </summary>
public int count { get; set; }
}
调用主方法,生成多个扇形图集合.
public static List<Image> Draw(List<StatCount> list, int width = 500, int height = 500)
{
List<Image> listimg = new List<Image>();
for (int i = 0; i < list.Count; i++)
{
System.Drawing.Bitmap image = new System.Drawing.Bitmap(width, height);
//创建Graphics类对象,用来画饼状图
Graphics g = Graphics.FromImage(image);
Pen p = new Pen(new SolidBrush(Color.Blue));
Point p1 = new Point(30, 30);
Size s = new Size(width-60, height- 60);
Rectangle trct = new Rectangle(p1, s);
Font font = new Font("宋体", 10, FontStyle.Regular);
int total = list.Sum((w) => { return w.count; });
//画大饼
Color color = ColorIndex(i);
g.FillPie(new SolidBrush(color), trct, 180, f * 360);
//写百分比文字
g.DrawString(list[i].name + ": " + FormatCentStr(total, list[i].count), font, new SolidBrush(Color.Blue), 10, 10);
listimg.Add(image);
}
return listimg;
}
效果图如下: