最近在做ERP数据分析的时候,看到网友法者:利用用友自带的BI的工具做出仪盘表的效果:
那如果我也想做呢?查询了网上很做资料都没有结果。很多都要收费和破解
这个时候想到了用Infragistics第三方控件自己有一个基于WEB2.0的破解版控件,那就先试试吧。
首先引用DLL
Infragistics2.WebUI.Shared.v7.3.dll
Infragistics2.WebUI.UltraWebGauge.v7.3.dll
类库:using Infragistics.UltraGauge.Resources;
参考官方网站:http://help.infragistics.com/Help/NetAdvantage/ASPNET/2010.3/CLR4.0/html/WebGauge_Web_Creating_a_Radial_WebGauge_Using_Code.html
private void Gauge2() { // Infragistics.WebUI.UltraWebGauge.UltraGauge ultraGauge2 = //new Infragistics.WebUI.UltraWebGauge.UltraGauge(); RadialGauge myRadialGauge = new RadialGauge(); RadialGaugeScale myScale = new RadialGaugeScale(); NumericAxis numericAxis1 = new NumericAxis(); RadialGaugeNeedle myNeedle = new RadialGaugeNeedle(); SolidFillBrushElement mySolidFillBrushElement = new SolidFillBrushElement(); SolidFillBrushElement mySolidFillBrushElementMajor = new SolidFillBrushElement(); SolidFillBrushElement mySolidFillBrushElementMinor = new SolidFillBrushElement(); SolidFillBrushElement mySolidFillBrushElementMinorStroke = new SolidFillBrushElement(); StrokeElement myStrokeElement = new StrokeElement(); SolidFillBrushElement mySolidFillBrushElement2 = new SolidFillBrushElement(); SimpleGradientBrushElement mySimpleGradientBrushElement = new SimpleGradientBrushElement(); SolidFillBrushElement mySolidFillBrushElement1 = new SolidFillBrushElement(); mySolidFillBrushElement.Color = System.Drawing.Color.Black; myRadialGauge.Dial.BrushElement = mySolidFillBrushElement; myRadialGauge.Margin = new Margin(10, 10, 10, 10, Measure.Pixels); //Set the following Axis properties and add the Axis to your scale: numericAxis1.EndValue = 120; //仪盘表最大数值 myScale.Axes.Add(numericAxis1); //Set the following Scale properties myScale.EndAngle = 405; myScale.StartAngle = 135; mySolidFillBrushElement1.Color = System.Drawing.Color.White; myScale.Labels.BrushElement = mySolidFillBrushElement1; //Set the following Label properties myScale.Labels.Extent = 65; myScale.Labels.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel); myScale.Labels.Frequency = 20;//大间隔显示数值:0 20 40 60 myScale.Labels.Orientation = Infragistics.UltraGauge.Resources.RadialLabelOrientation.Horizontal; myScale.Labels.SpanMaximum = 18; //Set the following major Tickmark properties: mySolidFillBrushElementMajor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(189)))), ((int)(((byte)(189)))), ((int)(((byte)(189))))); myScale.MajorTickmarks.BrushElement = mySolidFillBrushElementMajor; myScale.MajorTickmarks.EndExtent = 95; myScale.MajorTickmarks.EndWidth = 3; myScale.MajorTickmarks.Frequency = 10; //大间隔显示频率 myScale.MajorTickmarks.StartExtent = 85; myScale.MajorTickmarks.StartWidth = 3; //Set the following minor Tickmark properties: mySolidFillBrushElementMinor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); myScale.MinorTickmarks.BrushElement = mySolidFillBrushElementMinor; myScale.MinorTickmarks.EndExtent = 90; myScale.MinorTickmarks.EndWidth = 1; myScale.MinorTickmarks.Frequency = 2; //小间隔频率=myScale.MajorTickmarks.Frequency/myScale.MinorTickmarks.Frequency=10/2=5 myScale.MinorTickmarks.StartExtent = 85; mySolidFillBrushElementMinorStroke.Color = System.Drawing.Color.FromArgb(((int)(((byte)(135)))), ((int)(((byte)(135)))), ((int)(((byte)(135))))); myStrokeElement.BrushElement = mySolidFillBrushElementMinorStroke; myScale.MinorTickmarks.StrokeElement = myStrokeElement; //Set the following Anchor properties: myNeedle.Anchor.BrushElement = mySimpleGradientBrushElement; mySimpleGradientBrushElement.EndColor = System.Drawing.Color.WhiteSmoke; mySimpleGradientBrushElement.GradientStyle = Infragistics.UltraGauge.Resources.Gradient.BackwardDiagonal; mySimpleGradientBrushElement.StartColor = System.Drawing.Color.Gray; myNeedle.Anchor.RadiusMeasure = Infragistics.UltraGauge.Resources.Measure.Percent; //设置指针属性 mySolidFillBrushElement2.Color = System.Drawing.Color.Red; myNeedle.BrushElement = mySolidFillBrushElement2; myNeedle.EndExtent = 65; myNeedle.EndWidth = 1; myNeedle.MidExtent = 0; myNeedle.MidWidth = 3; myNeedle.Precision = 1; myNeedle.StartExtent = -20; myNeedle.StartWidth = 3; myNeedle.Value = int.Parse(TextBox2.Text.Trim());//指针显示值 myNeedle.WidthMeasure = Measure.Percent; myScale.Markers.Add(myNeedle); myRadialGauge.Scales.Add(myScale); UltraGauge2.Gauges.Add(myRadialGauge); //图形的大小 UltraGauge2.Height = Unit.Pixel(200); UltraGauge2.Width = Unit.Pixel(200); //显示文本框 BoxAnnotation boxAnnotation1 = new BoxAnnotation(); SolidFillBrushElement solidFillBrushElement1 = new SolidFillBrushElement(); SolidFillBrushElement solidFillBrushElement2 = new SolidFillBrushElement(); boxAnnotation1.Bounds = new System.Drawing.Rectangle(38, 70, 25, 10); boxAnnotation1.BoundsMeasure = Infragistics.UltraGauge.Resources.Measure.Percent; solidFillBrushElement2.Color = System.Drawing.Color.White; boxAnnotation1.Label.BrushElement = solidFillBrushElement2; boxAnnotation1.Label.FormatString = "Speed"; this.UltraGauge2.Annotations.Add(boxAnnotation1); this.Controls.Add(UltraGauge2); }
我在前台拉了一个控件主要是为了定位位置。
<%@ Register Assembly="Infragistics2.WebUI.UltraWebGauge.v7.3, Version=7.3.20073.38, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb"
Namespace="Infragistics.WebUI.UltraWebGauge" TagPrefix="igGauge" %>
<%@ Register Assembly="Infragistics2.WebUI.UltraWebGauge.v7.3, Version=7.3.20073.38, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb"
Namespace="Infragistics.UltraGauge.Resources" TagPrefix="igGaugeProp" %>
<igGauge:UltraGauge ID="UltraGauge2" runat="server" > </igGauge:UltraGauge>
看看效果是否达到了呢?