您的位置:首页 > 编程语言 > C#

C# winform动态画条形统计图

2019-04-22 20:04 225 查看

数据表:

将数据查询出来后,放在一个DataTable(以下变量dt),查询代码省略
找到要画图的容器,在容器的Paint事件中写上代码:

private void TiaoXing_Paint(object sender, PaintEventArgs e)
{
Pen pen = new Pen(Color.Blue, 2);
Graphics TiaoXingTongJi = e.Graphics;
Font myFont = new Font("宋体", 10);
GraphicsPath myGP = new GraphicsPath();//创建一系类相连的线
myGP.AddLine(34, 40, 40, 20);//添加线段(x1,y1.x2,y2)
myGP.AddLine(40, 20, 46, 40);
myGP.AddLine(40, 20, 40, 420);
myGP.AddLine(40, 420, 480, 420);
myGP.AddLine(480, 420, 460, 414);
myGP.AddLine(480, 420, 460, 426);
TiaoXingTongJi.DrawPath(pen, myGP);
Brush myBrush = new SolidBrush(Color.Blue);
for (int i = 0; i < 19; i++)//以10为一格画19格
{
TiaoXingTongJi.DrawString((i * 10).ToString(), myFont, myBrush, 12, 413 - (i * 20));
TiaoXingTongJi.DrawString("-", myFont, myBrush, 39, 413 - (i * 20));
}
for (int i = 1; i < dt.Rows.Count + 1; i++)
{
string ShuLiang = dt.Rows[i - 1]["数量"].ToString();
int x = 20 * i * 3;//x轴
int GaoDu = Convert.ToInt
7ff7
32(ShuLiang) * 2;//每个矩形的高
int y = 420 - GaoDu;//要表名的数量y轴
TiaoXingTongJi.DrawString(dt.Rows[i - 1]["物品名称"].ToString(), myFont, myBrush, x, 425);
TiaoXingTongJi.FillRectangle(myBrush, x, y, 25, GaoDu);
TiaoXingTongJi.DrawString(ShuLiang, myFont, myBrush, x, y - 20);
}
}

效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: