此文主要是和大家分享下在做配餐系统的新模块开发中,对"ZedGraph柱状图"控件的使用,先看看我在项目所应用的效果:
如上图所示,此柱状图只有Y轴,且每个柱的颜色都不同 ——没有X轴,却需要显示每种体质的名称和分数,这就需要在常规的(网上的示例)基础上做修改。
关键代码如下:
void ShowBar(double[] tzZhfArr)
{
string[] tzTypeArr = ComHelper.GetTzTypeArray();
Dictionary<int, double[]> dict = new Dictionary<int, double[]>();
Color[] colorArr ={ Color.Orange,Color.PaleGreen,Color.SlateBlue,
Color.Pink,Color.Green,Color.LightSkyBlue,
Color.Gray,Color.GreenYellow,Color.RosyBrown};
this.zedGraphControl_res.SuspendLayout();
this.zedGraphControl_res.Controls.Clear();
ZedGraph.GraphPane myPane = this.zedGraphControl_res.GraphPane;
myPane.Title.Text = "体质测试结果柱状图";
myPane.XAxis.Title.Text = "";
myPane.YAxis.Title.Text = "";
int start_x = 5;
double tzZhz = 0;
for (int i = 0; i < tzTypeArr.Length; i++)
{
tzZhz = tzZhfArr[i] < 0 ? 0 : tzZhfArr[i];
ZedGraph.BarItem bar = myPane.AddBar("", new double[] { start_x }, new double[] { tzZhz }, colorArr[i]);
bar.Bar.Fill = new ZedGraph.Fill(colorArr[i], Color.White, colorArr[i]);
ZedGraph.TextObj myText = new ZedGraph.TextObj(string.Format("{0},{1}", tzTypeArr[i], tzZhz), start_x, tzZhz + 3);
myText.Location.CoordinateFrame = ZedGraph.CoordType.AxisXYScale;
myText.Location.AlignH = ZedGraph.AlignH.Center;
myText.Location.AlignV = ZedGraph.AlignV.Center;
myText.FontSpec.Family = "宋体";
myText.FontSpec.Size = 16f;
myText.FontSpec.Fill.IsVisible = false;
myText.FontSpec.Border.IsVisible = false;
//myText.FontSpec.Angle = 35;//控制 文字 倾斜度
myPane.GraphObjList.Add(myText);
start_x += 15;
}
myPane.Fill = new ZedGraph.Fill(Color.WhiteSmoke, Color.Lavender, 0F);
myPane.Chart.Fill = new ZedGraph.Fill(Color.FromArgb(255, 255, 245),
Color.FromArgb(255, 255, 190), 90F);
//设置 柱体的宽度
myPane.BarSettings.ClusterScaleWidth = 30;
// Bars are stacked
myPane.BarSettings.Type = ZedGraph.BarType.Cluster;
myPane.XAxis.IsVisible = false;
// Enable the X and Y axis grids
myPane.XAxis.MajorGrid.IsVisible = false;
myPane.YAxis.MajorGrid.IsVisible = true;
myPane.XAxis.Scale.Min = -10;
this.zedGraphControl_res.ResumeLayout();
this.zedGraphControl_res.AxisChange();
}
其中,有几个重要的属性,需要特殊说明下:
1. //设置 柱体的宽度
myPane.BarSettings.ClusterScaleWidth = 30;
// Bars are stacked
myPane.BarSettings.Type = ZedGraph.BarType.Cluster;
设置 柱体的宽度 只在 myPane.BarSettings.Type(柱体布局设置或类型)中的某些值时有效。
2. myText.FontSpec.Angle = 35;//控制 文字 倾斜度
3. 当myPane.XAxis.IsVisible = false时,X轴下方(一般为-y的值)的文本等将无法显示。
——ZedGraph是国外的控件,功能貌似很强大,我实现效果可能还有更方便或合适的方法,对其也算是有个大概的了解,希望路过的朋友能分享下你的使用经验!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构