使用 C# 生成饼图控件:根据字符串数据动态创建饼图

本文将指导您如何使用 C# 语言创建自定义控件,该控件包含一个饼图,饼图的划分和比例由字符串数据控制,方便用户根据数据动态生成饼图。

示例代码

以下是一个简单的示例代码,演示如何创建并使用该控件:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Linq;

namespace PieChartControl
{
    public partial class PieChart : UserControl
    {
        private string _dataString;

        public PieChart()
        {
            InitializeComponent();
        }

        public string DataString
        {
            get { return _dataString; }
            set
            {
                _dataString = value;
                DrawPieChart();
            }
        }

        private void DrawPieChart()
        {
            if (string.IsNullOrEmpty(_dataString)) return;

            var data = _dataString.Split(',')
                                 .Select(s => int.Parse(s.Trim()))
                                 .ToList();
            var total = data.Sum();
            if (total == 0) return;

            var angles = data.Select(d => d * 360.0 / total).ToList();

            var colors = new[] {
                Color.Red, Color.Orange, Color.Yellow,
                Color.Green, Color.Blue, Color.Purple
            };

            var rect = new Rectangle(10, 10, Width - 20, Height - 20);
            var startAngle = 0.0;
            for (var i = 0; i < angles.Count; i++)
            {
                var sweepAngle = angles[i];
                var brush = new SolidBrush(colors[i % colors.Length]);
                graphics.FillPie(brush, rect, (float)startAngle, (float)sweepAngle);
                startAngle += sweepAngle;
            }
        }

        private Graphics graphics;
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            graphics = e.Graphics;
            DrawPieChart();
        }
    }
}

使用方法

  1. 将上面的代码保存为 PieChartControl.cs 文件。
  2. 在需要使用饼图控件的窗口中,添加以下代码:
var pieChart = new PieChartControl.PieChart();
pieChart.DataString = '123, 154, 254, 547, 584, 565';
pieChart.Dock = DockStyle.Fill;
Controls.Add(pieChart);

其中,第二行的 DataString 属性可以根据需要修改。可以在窗口设计器中设置控件的大小和位置,也可以在代码中使用 Dock 属性进行布局。

代码说明

  • PieChart 类继承自 UserControl 类,是一个自定义控件。
  • DataString 属性用于接收用户输入的字符串数据。
  • DrawPieChart 方法根据 DataString 属性生成饼图。
  • OnPaint 方法在控件需要重绘时调用 DrawPieChart 方法。

功能说明

  • 该控件能够根据字符串数据动态生成饼图。
  • 字符串数据使用逗号分隔,每个数字代表饼图中每个扇形的比例。
  • 控件可以根据用户设置的 DataString 属性自动更新饼图。

总结

通过使用 C# 语言,我们可以轻松地创建自定义饼图控件,并根据字符串数据动态生成饼图。这对于数据可视化应用非常有用,可以帮助用户更直观地理解数据。


原文地址: https://www.cveoy.top/t/topic/nGTU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录