使用的是Winform 曲线图控件
时间: 2023-09-28 11:13:14 浏览: 115
好的,那么您可以使用Winform曲线图控件来实现这个需求。以下是一个基本的实现步骤:
1. 首先,在Winform中添加一个曲线图控件,例如System.Windows.Forms.DataVisualization.Charting.Chart控件。
2. 然后,在代码中编写查询数据库的代码,并将结果存储到一个DataTable对象中。您可以使用SQLiteDataAdapter和SQLiteCommand对象来执行SQL查询。
3. 接着,将DataTable中的数据添加到曲线图控件中。您可以使用Chart.Series.Add方法来添加一个系列,然后使用Series.Points.AddXY方法来添加数据点。
以下是一个参考的代码示例:
```c#
using System.Data.SQLite;
using System.Windows.Forms.DataVisualization.Charting;
// 定义一个方法来查询数据库并绘制曲线图
private void DrawChart()
{
// 创建一个SQLiteConnection对象,并打开连接
using (var connection = new SQLiteConnection("Data Source=数据库文件路径"))
{
connection.Open();
// 创建一个SQL查询语句,并用SQLiteCommand对象执行查询
var sql = "SELECT 季度, COUNT(CASE WHEN 完成度 = 'Pass' THEN 1 ELSE NULL END) as Pass_Count, COUNT(CASE WHEN 完成度 = 'Fail' THEN 1 ELSE NULL END) as Fail_Count FROM 表名 GROUP BY 季度 ORDER BY CASE 季度 WHEN 'Q1' THEN 1 WHEN 'Q2' THEN 2 WHEN 'Q3' THEN 3 WHEN 'Q4' THEN 4 END";
var command = new SQLiteCommand(sql, connection);
var adapter = new SQLiteDataAdapter(command);
var dataset = new DataSet();
adapter.Fill(dataset);
// 清空曲线图控件中的数据
chart1.Series.Clear();
// 添加一个系列,并设置系列名称和图表类型
var series1 = chart1.Series.Add("Pass_Count");
series1.ChartType = SeriesChartType.Line;
// 添加数据点到系列中
foreach (DataRow row in dataset.Tables[0].Rows)
{
var x = row["季度"].ToString();
var y = Convert.ToInt32(row["Pass_Count"]);
series1.Points.AddXY(x, y);
}
// 添加另一个系列,并设置系列名称和图表类型
var series2 = chart1.Series.Add("Fail_Count");
series2.ChartType = SeriesChartType.Line;
// 添加数据点到系列中
foreach (DataRow row in dataset.Tables[0].Rows)
{
var x = row["季度"].ToString();
var y = Convert.ToInt32(row["Fail_Count"]);
series2.Points.AddXY(x, y);
}
}
}
```
这段代码会查询数据库中的数据,并将Pass_Count和Fail_Count的值添加到曲线图控件中。您可以根据需要修改系列名称、图表类型和数据点的颜色等属性来美化曲线图。
阅读全文