WinForm"ZedGraph柱状图"控件使用经验分享 之配餐系统的开发

本文介绍如何在配餐系统中使用ZedGraph实现无X轴的柱状图,并展示如何通过代码自定义柱子颜色及显示体质名称与分数。

      此文主要是和大家分享下在做配餐系统的新模块开发中,对"ZedGraph柱状图"控件的使用,先看看我在项目所应用的效果:

2011040716322567.jpg

     如上图所示,此柱状图只有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是国外的控件,功能貌似很强大,我实现效果可能还有更方便或合适的方法,对其也算是有个大概的了解,希望路过的朋友能分享下你的使用经验!

ZedGraph饼图、条形图和饼图Demo源码 ZedGraphV515是C#编写的.NET类库,提供了用户控件和web控件。它可以创建2D的线性图、条形图和饼图。 它功能完整且有详细的功能自定义。 基于LGPL协议开源,.NET 2.0 C#源代码)它的思路清淅,所以非常容易就上手. 几个注意点: 图片的保存路径设置:RenderedImagePath属性中设置,程序对该文件夹应该是有写和修改权限的 图片的输出格式:OutputFormat属性中设置,Png的推荐,比较清晰。 Chart ChartBorder 图表区域的边框设置 ChartFill 图表区域的背景填充 Legend 图表的注释标签显示设置项目,一组数据对应一种颜色的注释 IsHStack 当有多个显示项的时候设置Y轴数据是叠加的还是分开的 Xaxis 图表区域的X轴相关信息设置 AxisColor 坐标轴颜色 Cross 坐标的原点,可以设置坐标的偏移程度 CrossAuto 原点自动设置:True的话Cross的设置就无效了。 FontSpec X轴标题字体相关信息 Angle X轴标题字体显示时候的角度,0为水平 90为垂直 Fill X轴标题字体填充信息 ColorOpacity 透明度 IsScaled 设置X轴标题字体显示大小是否根据图的比例放大缩小 RangeMax 填充时候的最大倾斜度(有过渡色,没试过) RangeMin 填充时候的最小倾斜度(有过渡色,没试过) StringAlignment X轴标题字体排列(不清楚,没试过) IsOmitMag 是否显示指数幂(10次方,没试过,似乎与IsUseTenPower有关系) IsPreventLabelOverlap 坐标值显示是否允许重叠,如果False的话,控件会根据坐标值长度自动消除部分坐标值的显示状态 IsShowTitle X轴标题是否显示 IsTicsBetweenLabels 两个坐标值之间是否自动显示分隔标志 IsUseTenPower 是否使用10次幂指数 IsVisible 是否显示X轴
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值