| |
 |
How to: Use Custom Measure Units in an Automatic Numeric Scale Mode
To use a custom Numeric measure unit for an Automatic scale mode, assign an object of a class implementing the INumericMeasureUnitsCalculator interface to the NumericScaleOptions.AutomaticMeasureUnitsCalculator property of AxisBase.NumericScaleOptions.
C#:Form1.cs |
private void Form1_Load(object sender, EventArgs e) {
chart.Series.Add(GenerateSeries(10000));
XYDiagram diagram = chart.Diagram as XYDiagram;
if (diagram == null) return;
diagram.AxisX.NumericScaleOptions.AggregateFunction = AggregateFunction.Average;
diagram.AxisX.NumericScaleOptions.ScaleMode = ScaleMode.Automatic;
diagram.AxisX.NumericScaleOptions.AutomaticMeasureUnitsCalculator = new CustomNumericMeasureUnitCalculator();
diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false;
}
class CustomNumericMeasureUnitCalculator : INumericMeasureUnitsCalculator {
public double CalculateMeasureUnit(
IEnumerable<Series> series,
double axisLength,
int pixelsPerUnit,
double visualMin,
double visualMax,
double wholeMin,
double wholeMax) {
double visualRange = visualMax - visualMin;
return Math.Ceiling(visualRange / 20);
}
}
|
VB:Form1.vb |
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
chart.Series.Add(GenerateSeries(10000))
Dim diagram As XYDiagram = TryCast(chart.Diagram, XYDiagram)
If diagram Is Nothing Then
Return
End If
diagram.AxisX.NumericScaleOptions.AggregateFunction = AggregateFunction.Average
diagram.AxisX.NumericScaleOptions.ScaleMode = ScaleMode.Automatic
diagram.AxisX.NumericScaleOptions.AutomaticMeasureUnitsCalculator = New CustomNumericMeasureUnitCalculator()
diagram.AxisY.WholeRange.AlwaysShowZeroLevel = False
End Sub
Friend Class CustomNumericMeasureUnitCalculator
Implements INumericMeasureUnitsCalculator
Public Function CalculateMeasureUnit(
ByVal series As IEnumerable(Of Series),
ByVal axisLength As Double,
ByVal pixelsPerUnit As Integer,
ByVal visualMin As Double,
ByVal visualMax As Double,
ByVal wholeMin As Double,
ByVal wholeMax As Double) As Double Implements INumericMeasureUnitsCalculator.CalculateMeasureUnit
Dim visualRange As Double = visualMax - visualMin
Return Math.Ceiling(visualRange / 20)
End Function
End Class
|
Is this topic helpful?
Additional Feedback
Close
|