怎么用C#画 Bar 图?

crane_9988 2006-12-07 06:44:55
我想将数据库中的数据用Bar的图形表示出来,, 以前我是用Excel做的,先将数据库中的值取到excel中,然后用VBA将图形画出来, 不过这样好想太麻烦了,

请问有没有别的方法用C# 画 Bar 图?????????? 谢谢啦。。。。
...全文
233 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
crane_9988 2006-12-07
  • 打赏
  • 举报
回复
我想画一个这样的柱形图!! 比如说, 我有数据:

cat 0.5 0.7 1.2 1.6
dog 0.7 1.3 1.9 2.1
house 1.3 0.6 0.9 0.8

以上的数据有四行,,在画柱形图的时候,,我想第一行用一种颜色,第二行用另一种颜色,柱的长度由相应的大小来决定,又谁有相关的程序吗?
mlhy20060406 2006-12-07
  • 打赏
  • 举报
回复
mark
huazi4995 2006-12-07
  • 打赏
  • 举报
回复
ding
早起晚睡 2006-12-07
  • 打赏
  • 举报
回复
//**************在form上绘制******************
//Graphics g = this.CreateGraphics();
//********************************************


//*************在背景图上绘制*****************
//pic = new PictureBox();
//pic.Size = new Size(this.ClientSize.Width, ClientSize.Height);
//pic.Location = new Point(0, 0);
//pic.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;

map = new Bitmap(@"./Sunset.jpg");

// map = new Bitmap(this.ClientSize.Width, ClientSize.Height);

g = Graphics.FromImage(map);
// g.Clear(Color.Black);
this.BackgroundImage = map;
//pic.BackgroundImage = map;
//pic.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
//this.Controls.Add(pic);
//********************************************
DataTable dtl = new DataTable();
string ElementName = "";
DaoCa daocha = new DaoCa(g);
Pen myPen = new Pen(Color.FromArgb(100,100,100), 6);
Font drawFont = new Font("Arial", 8);
DataTable dt = new DataTable(); //定义datatable
int xx1 = 0, xx2 = 0, yy1 = 0, yy2 = 0, xx = 0, dd,ll=0;
dt = db.createDataTable("select * from ElementList ");//通过DB类进行数据库的查询返回datatable
int asd = dt.Rows.Count;
for (int i = 0; i < asd; i++)
{
xx1 = System.Convert.ToInt16(dt.Rows[i][4].ToString());
yy1 = System.Convert.ToInt16(dt.Rows[i][5].ToString());
xx2 = System.Convert.ToInt16(dt.Rows[i][6].ToString());
yy2 = System.Convert.ToInt16(dt.Rows[i][7].ToString());
xx = System.Convert.ToInt16(dt.Rows[i][8]);
dd = System.Convert.ToInt16(dt.Rows[i][1]);
ll=System.Convert.ToInt16(dt.Rows[i]["eloprtype"]);
//ElementName = dt.Rows[i]["eleactid"].ToString();//获取元素名字bjg
//string sqlstr = "select a.*,b.Btype from dbo.ElementList a ";
// sqlstr += "inner join humpstation.dbo.RailBranch b ";
// sqlstr += "on b.BRelate=a.eleactid where b.BElementID='" + ElementName + "'";
if (xx2 == 0 && yy2 == 0 && dd == 5)
{
g.DrawString(dt.Rows[i][2].ToString(), drawFont, Brushes.Green, xx1, yy1);//在背景图上填写字符串

}
if (xx2 == 0 && yy2 == 0 && xx == 372)
{
g.FillEllipse(Brushes.Green, xx1, yy1, 12, 12);//画信号机

}

if (xx2 == 0 && yy2 == 0 && xx == 20)
{
// g.FillEllipse(Brushes.Red, xx1, yy1, 12, 12);//画道岔
}
else
{
if(ll==61 || ll== 62||ll==63)
{
//g.DrawLine(Pens.Green, xx2, yy2, xx1, yy1);
g.DrawRectangle(Pens.Green, xx1, yy1-3, (xx2 - xx1)/2, 6);
g.DrawRectangle(Pens.Green, (xx2+xx1)/2, yy1-3, (xx2 - xx1) / 2, 6);
}
else
if (xx1 != 0 && yy2 != 0)
g.DrawLine(myPen, xx2, yy2, xx1, yy1);//画直线


}

}
dt = db.createDataTable("select * from ElementList ");
// sqlconn
for (int i = 0; i < asd; i++)
{
xx1 = System.Convert.ToInt16(dt.Rows[i]["elstartx"].ToString());
yy1 = System.Convert.ToInt16(dt.Rows[i]["elstarty"].ToString());
xx2 = System.Convert.ToInt16(dt.Rows[i]["elendx"].ToString());
yy2 = System.Convert.ToInt16(dt.Rows[i]["elendy"].ToString());
// xx = System.Convert.ToInt16(dt.Rows[i][8]);
// dd = System.Convert.ToInt16(dt.Rows[i][1]);
ll = System.Convert.ToInt16(dt.Rows[i]["eloprtype"]);
ElementName = dt.Rows[i]["eleactid"].ToString();//获取元素名字bjg
if(ll==200)
{
string sqlstr = "select a.*,b.Btype from dbo.ElementList a ";
bool stype = false;
sqlstr += "inner join humpstation.dbo.RailBranch b ";
sqlstr += "on b.BRelate=a.eleactid where b.BElementID='" + ElementName + "'";
sda =new SqlDataAdapter(sqlstr,sqlconn);
sda.Fill(dtl);
if (dtl.Rows.Count > 0)
{
for (int j = 0; j < dtl.Rows.Count; j++)
{
xx2 = System.Convert.ToInt16(dtl.Rows[j]["elstartx"].ToString());
yy2 = System.Convert.ToInt16(dtl.Rows[j]["elstarty"].ToString());
stype = (bool)dtl.Rows[j]["Btype"];
if(yy1!=yy2)
daocha.MoveTo(new PointF(xx1 + 6, yy1 + 6), new PointF(xx2 + 6, yy2 + 6), !stype, true, Brushes.Red);


}

}

}
dtl.Clear();



}
早起晚睡 2006-12-07
  • 打赏
  • 举报
回复
GDI画图
灰太狼 2006-12-07
  • 打赏
  • 举报
回复
參見
http://blog.csdn.net/tjvictor/archive/2006/11/25/1414011.aspx
中柱形圖。
totoz 2006-12-07
  • 打赏
  • 举报
回复
用GDI+
孟子E章 2006-12-07
  • 打赏
  • 举报
回复
方法类似
http://dotnet.aspx.cc/article/221bc601-1a1b-4e1f-883d-04b043659703/read.aspx
大飞飞虫 2006-12-07
  • 打赏
  • 举报
回复
有的,你创建一个母图片(或新建一个图片对象)的graphic接口就好了,可以在一张白图上画矩形条就可以了。

矩形的高度就是数据。

ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxmclignrl/html/a98a76ab-e455-49c9-891c-0491ac932f2c.htm
crane_9988 2006-12-07
  • 打赏
  • 举报
回复
ding

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧