OpenFlashChart使用
最近在做的项目需要经常使用图表,在使用了MSchart之后发现例子少,而且极其难控制.在网上搜了一下,找到OpenFlashChart这个开源项目,发现效果还不错,而且例子满全的,效果也不错.官方下载地址:http://teethgrinder.co.uk/open-flash-chart/.
该控件的数据传输方式是采用了JSON,所以有个C#写得项目是用来翻译把调用代码生成JSON代码.
下面贴下使用方法备忘:
1.编译openflashchart工程生成DLL引用到项目中.
2.在VS工具栏上加上该控件.
各种图形的生成代码:
1.饼图:


OpenFlashChart.OpenFlashChart chart = new OpenFlashChart.OpenFlashChart();
chart.Title = new Title("Pie Chart");
OpenFlashChart.Pie pie = new OpenFlashChart.Pie();
Random random = new Random();
List<PieValue> values = new List<PieValue>();
List<string> labels = new List<string>();
for (int i = 0; i < 12; i++)
{
values.Add(new PieValue(random.NextDouble(),"Pie"+i));
labels.Add(i.ToString());
}
//values.Add(0.2);
PieValue pieValue = new PieValue(10);
pieValue.Click = "http://xiao-yifang.blogspot.com";
values.Add(pieValue);
pie.Values = values;
pie.FontSize = 20;
pie.Alpha = .5;
AnimationSeries animationSeries = new AnimationSeries();
animationSeries.Add(new Animation("bounce",5));
pie.Animate = animationSeries;
//pie.GradientFillMode = false;
//pie.FillAlpha = 10;
//pie.Colour = "#fff";
pie.Colours = new string[]{"#04f","#1ff","#6ef","#f30"};
pie.Tooltip="#label#,#val# of #total##percent# of 100%";
chart.AddElement(pie);
chart.Bgcolor = "#202020";
柱状图:


OpenFlashChart.OpenFlashChart chart = new OpenFlashChart.OpenFlashChart();
chart.Title = new Title("Bar Chart");
Bar bar = new OpenFlashChart.Bar();
Random random = new Random();
bar.Colour = "#344565";
bar.FillAlpha = 0.4;
bar.Text = "Test";
bar.FontSize = 10;
List<object> values = new List<object>();
for (int i = 0; i < 12; i++)
values.Add(random.Next(i, i * 2));
BarValue barValue = new BarValue(12);
barValue.OnClick = "http://xiao-yifang.blogspot.com";
values.Add(barValue);
bar.Values = values;
chart.AddElement(bar);
XAxis xaxis = new XAxis();
xaxis.Labels.SetLabels(new string[] { "text", "#ef0", "10", "vertical" });
//xaxis.Steps = 1;
//xaxis.Offset = true;
////xaxis.SetRange(-2, 15);
chart.X_Axis = xaxis;
//YAxis yaxis = new YAxis();
//yaxis.Steps = 4;
//yaxis.SetRange(0, 20);
//chart.Y_Axis = yaxis;
chart.Y_Axis.SetRange(0,24,3);
bar.Tooltip = "提示:label:#x_label#<br>#top#<br>#bottom#<br>#val#";
线状图:


OpenFlashChart.OpenFlashChart chart = new OpenFlashChart.OpenFlashChart();
List<double> data1 = new List<double>();
List<double> data2 = new List<double>();
Random rand = new Random(DateTime.Now.Millisecond);
for(double i=0;i<12;i++)
{
data1.Add(rand.Next(30));
data2.Add(rand.Next(50));
}
OpenFlashChart.Line line1 = new Line();
line1.Values = data1;
line1.HaloSize = 0;
line1.Width = 2;
line1.DotSize = 5;
line1.DotStyleType.Tip = "#x_label#<br>#val#";
//line1.DotStyleType.Type = DotType.ANCHOR;
//line1.DotStyleType.Type = DotType.BOW;
line1.DotStyleType.Colour = "#467533";
line1.Tooltip = "#x_label#<br>提示:#val#";
OpenFlashChart.Line line2 = new Line();
line2.Values = data2;
line2.HaloSize = 1;
line2.Width = 3;
line2.DotSize = 4;
line2.DotStyleType.Tip = "#x_label#<br>#val#";
line1.DotStyleType.Type = DotType.ANCHOR;
//line1.DotStyleType.Type = DotType.BOW;
line2.DotStyleType.Colour = "#fe4567";
line2.Tooltip = "提示:#val#";
line2.AttachToRightAxis(true);
chart.AddElement(line1);
chart.AddElement(line2);
chart.Y_Legend=new Legend("中文test");
chart.Title = new Title("line演示");
chart.Y_Axis.SetRange(0,35,5);
chart.X_Axis.Labels.Color = "#e43456";
chart.X_Axis.Labels.VisibleSteps = 3;
chart.Y_Axis.Labels.FormatString = "$#val#";
chart.X_Axis.SetLabels(new string[]{"test1","test2"});
//chart.Y_Axis.SetLabels(new string[] { "test1", "test2", "test1", "test2", "test1", "test2" });
chart.X_Axis.Steps = 4;
chart.Y_Axis.Steps = 3;
chart.Y_Axis.Colour = "#ef6745";
chart.Y_Axis.Labels.Color = "#ef6745";
chart.Y_Axis.Offset = true;
chart.Y_RightLegend = new Legend("test y legend right");
chart.Y_Axis_Right = new YAxis();
chart.Y_Axis_Right.Steps = 8;
chart.Y_Axis_Right.TickLength = 4;
chart.Y_Axis.TickLength = 4;
chart.Y_Axis_Right.SetRange(0,60);
chart.Tooltip = new ToolTip("全局提示:#val#");
chart.Tooltip.Shadow = true;
chart.Tooltip.Colour = "#e43456";
chart.Tooltip.MouseStyle = ToolTipStyle.CLOSEST;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?