C#饼状图和数据绑定
时间: 2025-01-03 18:36:30 浏览: 61
### C# 中创建饼状图并进行数据绑定
#### 创建 WinForms 应用程序项目
为了展示如何在 C# 的 Windows Forms 应用程序中创建饼状图并与数据源绑定,先建立一个新的 WinForms 项目。
#### 添加 OxyPlot NuGet 包
通过 NuGet Package Manager 安装 `OxyPlot.WindowsForms` 和 `OxyPlot.Core` 来引入必要的库支持图表绘制功能[^1]。
#### 设计窗体布局
向表单添加一个名为 `plotView1` 的 PlotView 控件用于承载即将生成的图形界面组件。设置其 Dock 属性为 Fill 以便填充整个窗口空间。
#### 编写代码逻辑
下面给出完整的示例代码来说明怎样构建一个简单的饼状图以及完成基本的数据关联操作:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
using OxyPlot;
using OxyPlot.Series;
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
Load += Form1_Load; // 绑定加载事件处理方法
}
private void Form1_Load(object sender, EventArgs e) {
CreatePieChart();
}
/// <summary>
/// 构建饼状图的方法
/// </summary>
private void CreatePieChart() {
var model = new PlotModel { Title = "成绩分布情况" };
// 准备要可视化的分数列表及其标签
string[] labels = {"小红", "小李", "小明"};
double[] scores = {87.5, 92.3, 76};
// 初始化 PieSeries 实例,并指定切片的颜色方案
var series = new PieSeries {
StartAngle = 0,
AngleSpan = 360,
InsideLabelPosition = .8f,
ExplodeDistanceFraction = .05f,
LabelFormatString = "{0}: {2:0}%",
StrokeThickness = 2.0,
SliceFillGradientType = GradientType.Linear
};
// 动态添加多个扇区到系列集合里
for (int i = 0; i < labels.Length; ++i)
series.Slices.Add(new PieSlice(labels[i], scores[i]) {
IsExploded = false,
Color = OxyColors.FromRgb((byte)(new Random().Next(256)),
(byte)(new Random().Next(256)),
(byte)(new Random().Next(256)))
});
// 将配置好的序列加入模型对象内
model.Series.Add(series);
// 设置视图所使用的绘图模板
plotView1.Model = model;
}
}
```
这段代码实现了当应用程序启动时自动渲染一张包含三个学生考试得分比例关系的饼状图。每个部分都赋予随机色彩以区分不同个体的表现差异。
对于更复杂的应用场景,比如从 SQLite 数据库存储获取动态更新的成绩记录,则可以根据实际情况调整上述例子中的静态数组变量 `labels` 及 `scores` ,改为查询语句返回的结果集来进行赋值[^2]。
阅读全文
相关推荐


















