如何使用system.web.ui.datavisualization.charting.chart来制作图表?

14
有没有人有一个好链接可以教我如何使用微软内置的图表控件制作基础图表?如果可以的话,我想要制作一个堆栈条形图,但是如果不行,一个普通的条形图也足够了。所有图表的数据都是通过单个SQL调用得出的(一个结果集,1个标签列和3个数据列,如果这有任何影响的话)。我的谷歌搜索功夫正在失败中。谢谢您提前帮助。
2个回答

27

kesun这篇文章中遗漏的一点是通过代码生成图表:

这里是一个快速示例,涵盖了大部分选项。

Chart c = new Chart();
c.AntiAliasing = AntiAliasingStyles.All;
c.TextAntiAliasingQuality = TextAntiAliasingQuality.High;
c.Width = 640; //SET HEIGHT
c.Height = 480; //SET WIDTH

ChartArea ca = new ChartArea();
ca.BackColor = Color.FromArgb(248, 248, 248);
ca.BackSecondaryColor = Color.FromArgb(255, 255, 255);
ca.BackGradientStyle = GradientStyle.TopBottom;

ca.AxisY.IsMarksNextToAxis = true;
ca.AxisY.Title = "Gigabytes Used";
ca.AxisY.LineColor = Color.FromArgb(157, 157, 157);
ca.AxisY.MajorTickMark.Enabled = true;
ca.AxisY.MinorTickMark.Enabled = true;
ca.AxisY.MajorTickMark.LineColor = Color.FromArgb(157, 157, 157);
ca.AxisY.MinorTickMark.LineColor = Color.FromArgb(200, 200, 200);
ca.AxisY.LabelStyle.ForeColor = Color.FromArgb(89, 89, 89);
ca.AxisY.LabelStyle.Format = "{0:0.0}";
ca.AxisY.LabelStyle.IsEndLabelVisible = false;
ca.AxisY.LabelStyle.Font = new Font("Calibri", 4, FontStyle.Regular);
ca.AxisY.MajorGrid.LineColor = Color.FromArgb(234, 234, 234);

ca.AxisX.IsMarksNextToAxis = true;
ca.AxisX.LabelStyle.Enabled = false;
ca.AxisX.LineColor = Color.FromArgb(157, 157, 157);
ca.AxisX.MajorGrid.LineWidth = 0;
ca.AxisX.MajorTickMark.Enabled = true;
ca.AxisX.MinorTickMark.Enabled = true;
ca.AxisX.MajorTickMark.LineColor = Color.FromArgb(157, 157, 157);
ca.AxisX.MinorTickMark.LineColor = Color.FromArgb(200, 200, 200);

c.ChartAreas.Add(ca);

Series s = new Series();
s.Font = new Font("Lucida Sans Unicode", 6f);
s.Color = Color.FromArgb(215, 47, 6);
s.BorderColor = Color.FromArgb(159, 27, 13);
s.BackSecondaryColor = Color.FromArgb(173, 32, 11);
s.BackGradientStyle = GradientStyle.LeftRight;

int i = 0;
foreach (DataRow dr in sourceData.Rows)
{
    DataPoint p = new DataPoint();
    p.XValue = i;
    p.YValues = new Double[] { Convert.ToDouble(dr[0]) };
    s.Points.Add(p);
    i++;
}

c.Series.Add(s);

c.SaveImage(Server.MapPath("~/output.png"), ChartImageFormat.Png);

这将输出到一个文件,但你可以将其写在HttpHandler中,直接写入响应流中。


谢谢。我选择了kesun的答案,因为我需要的信息在第二个链接中。你提供了有用的信息。但是,为了节省时间,我只是在开发环境中完成了所有操作。 - BoltBait
使用哪个命名空间来引用 Color 类? - IAbstract
1
@IAbstract - System.Drawing - lukiffer

14

谢谢。我需要的信息在第二部分中。 - BoltBait
很高兴能帮忙!祝你的项目顺利! - user170386
2
似乎这些文章已被删除,但 archive.org 仍然有它们:https://web.archive.org/web/20130720125820/http://dotnetslackers.com/articles/aspnet/Microsoft-Chart-with-ASP-NET-35-Part2.aspx - hcoverlambda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接