How do I display a collection of horizontal linear gauges, vertically (one on top of the other). When I run my test code, only one gauge is displayed. Below is my test code which creates a gauge collection with two linear gauges (myLinearGauge and myLinearGauge2) . Thanks for the assistance!
Infragistics.WebUI.UltraWebGauge.UltraGauge ultraGauge1 =
new Infragistics.WebUI.UltraWebGauge.UltraGauge();
LinearGauge myLinearGauge = new LinearGauge();
LinearGauge myLinearGauge2 = new LinearGauge();
LinearGaugeScale myScale = new LinearGaugeScale();
NumericAxis numericAxis1 = new NumericAxis();
LinearGaugeBarMarker barMarker = new LinearGaugeBarMarker();
LinearGaugeNeedle needleMarker = new LinearGaugeNeedle();
SolidFillBrushElement transparentBrushElement = new SolidFillBrushElement();
SolidFillBrushElement blackBrushElement = new SolidFillBrushElement();
SolidFillBrushElement grayBrushElement = new SolidFillBrushElement();
SolidFillBrushElement greenBrushElement = new SolidFillBrushElement();
SolidFillBrushElement mySolidFillBrushElement4 = new SolidFillBrushElement();
SolidFillBrushElement redBrushElement = new SolidFillBrushElement();
SimpleGradientBrushElement mySimpleGradientBrushElement = new SimpleGradientBrushElement();
transparentBrushElement.Color = System.Drawing.Color.Transparent;
blackBrushElement.Color = System.Drawing.Color.Black;
grayBrushElement.Color = System.Drawing.Color.Gray;
greenBrushElement.Color = System.Drawing.Color.Green;
redBrushElement.Color = System.Drawing.Color.Red;
mySimpleGradientBrushElement.StartColor = System.Drawing.Color.LightSteelBlue;
mySimpleGradientBrushElement.EndColor = System.Drawing.Color.White;
mySimpleGradientBrushElement.GradientStyle = Infragistics.UltraGauge.Resources.Gradient.BackwardDiagonal;
//Set the background color
//myLinearGauge.BrushElement = transparentBrushElement;
//Set the corner extent and orientation of Linear gauge
//myLinearGauge.CornerExtent = 50;
//myLinearGauge.Orientation = LinearOrientation.Horizontal;
//Set the end value of the axis to 1
numericAxis1.EndValue = 1;
numericAxis1.TickmarkInterval = 0.1;
myScale.Axes.Add(numericAxis1);
//Set the following Scale properties:
myLinearGauge.BrushElement = mySimpleGradientBrushElement;
myScale.EndExtent = 95;
myScale.InnerExtent = 24;
myScale.StartExtent = 5;
myScale.OuterExtent = 36;
//Set the following Labels properties:
myScale.Labels.BrushElement = blackBrushElement;
myScale.Labels.Extent = 11;
myScale.Labels.Font =
new System.Drawing.Font("Arial", 8F,
System.Drawing.FontStyle.Regular);
myScale.Labels.Frequency = 1;
myScale.Labels.FormatString = "<DATA_VALUE:>";
//Set the following major Tickmark properties:
myScale.MajorTickmarks.BrushElement = grayBrushElement;
myScale.MajorTickmarks.EndExtent = 47;
myScale.MajorTickmarks.EndWidth = 2;
myScale.MajorTickmarks.Frequency = 0;
myScale.MajorTickmarks.StartExtent = 26;
myScale.MajorTickmarks.StartWidth = 2;
//Set the following minor Tickmark properties:
myScale.MinorTickmarks.BrushElement = grayBrushElement;
myScale.MinorTickmarks.EndExtent = 30;
myScale.MinorTickmarks.EndWidth = 2;
myScale.MinorTickmarks.Frequency = .2;
myScale.MinorTickmarks.StartExtent = 42;
myScale.MinorTickmarks.StartWidth = 2;
//Set the following Marker properties:
barMarker.InnerExtent = 50;
barMarker.OuterExtent = 140;
//myMarker.SegmentSpan = 1;
//myMarker.StartExtent = 0;
barMarker.Value = .85;
barMarker.Precision = 0;
if (Convert.ToSingle(barMarker.Value) < .9)
{
barMarker.BrushElement = redBrushElement;
}
else
barMarker.BrushElement = greenBrushElement;
myScale.Markers.Add(barMarker);
needleMarker.StartExtent = 86;
needleMarker.MidExtent = 86;
needleMarker.EndExtent = 52;
needleMarker.StartWidth = 5;
needleMarker.MidWidth = 17;
needleMarker.EndWidth = 0;
needleMarker.Value = .9;
needleMarker.Precision = 0;
needleMarker.BrushElement = greenBrushElement;
myScale.Markers.Add(needleMarker);
//Add scale to the scales collection and gauge to the Gauges collection.
myLinearGauge.Scales.Add(myScale);
myLinearGauge2.Scales.Add(myScale);
ultraGauge1.Gauges.Add(myLinearGauge);
ultraGauge1.Gauges.Add(myLinearGauge2);
ultraGauge1.ID = "ultraGauge1";
ultraGauge1.Height = Unit.Pixel(69);
ultraGauge1.Width = Unit.Pixel(450);
ultraGauge1.TabIndex = 0;
this.Controls.Add(ultraGauge1);
no, but you can use percentage-based bounds for the annotations as well as the gauges. let me know if you have any problems with the layout.
This works, but leads to a problem with annotations. The annotations that I am adding are only showing up on the first gauge in the collection, or possibly on the control based on the bounds I set for the annotation. Is it possible to set annotations for each gauge in the collection?
you need to set up the bounds of each gauge, otherwise they will overlap. add this code and you should be all set:
myLinearGauge.Bounds = new Rectangle(0, 0, 100, 50);myLinearGauge2.Bounds = new Rectangle(0, 50, 100, 50);myLinearGauge.BoundsMeasure = myLinearGauge2.BoundsMeasure = Measure.Percent;