wpf-devexpress-dot-xpf-dot-charts-dot-idatetimemeasureunitscalculator-dot-calculatemeasureunit-x28-ienumerable-series-double-int32-double-double-double-double-x29.md
Calculates the date-time measurement unit that an axis should use for display.
Namespace : DevExpress.Xpf.Charts
Assembly : DevExpress.Xpf.Charts.v25.2.dll
NuGet Package : DevExpress.Wpf.Charts
DateTimeMeasureUnit CalculateMeasureUnit(
IEnumerable<Series> series,
double axisLength,
int pixelsPerUnit,
double visualMin,
double visualMax,
double wholeMin,
double wholeMax
)
Function CalculateMeasureUnit(
series As IEnumerable(Of Series),
axisLength As Double,
pixelsPerUnit As Integer,
visualMin As Double,
visualMax As Double,
wholeMin As Double,
wholeMax As Double
) As DateTimeMeasureUnit
| Name | Type | Description |
|---|---|---|
| series | IEnumerable<Series> |
All Series associated with the axis.
| | axisLength | Double |
The length of the axis’s visual range in pixels.
| | pixelsPerUnit | Int32 |
The minimum count of pixels that series require to draw their points correctly.
| | visualMin | Double |
The visual range’s minimum value in milliseconds.
| | visualMax | Double |
The visual range’s maximum value in milliseconds.
| | wholeMin | Double |
The whole range’s minimum value in milliseconds.
| | wholeMax | Double |
The whole range’s maximum value in milliseconds.
|
| Type | Description |
|---|---|
| DateTimeMeasureUnit |
The calculated measurement unit.
|
For example, bars can overlap each other if the calculated measurement unit covers fewer pixels on the axis than the pixelPerUnit parameter specifies.
The automatic date-time scale options provide the capability to use a custom measurement unit calculator to determine the current measurement unit if the predefined one does not fit your requirements. Create a class that implements the IDateTimeMeasureUnitsCalculator interface and assign it to the AutomaticDateTimeScaleOptions.AutomaticMeasureUnitsCalculator property to use a custom measurement units calculation algorithm:
public class CustomAutomaticDateTimeMeasureUnitsCalculator : IDateTimeMeasureUnitsCalculator {
public DateTimeMeasureUnit CalculateMeasureUnit(
IEnumerable<Series> series,
double axisLength, int pixelsPerUnit,
double visualMin, double visualMax,
double wholeMin, double wholeMax
) {
double rawMeasureUnit = ((visualMax - visualMin) * pixelsPerUnit / axisLength);
return PickDateTimeMeasureUnit(rawMeasureUnit);
}
static int[] unitMultipliers = {
1, 1000, 60, 60, 24, 7, 4, 3, 4
};
static DateTimeMeasureUnit PickDateTimeMeasureUnit(double milliseconds) {
double valueStop = 1.0;
for (int i = 0; i < unitMultipliers.Length; i++) {
valueStop *= unitMultipliers[i];
if (milliseconds <= valueStop)
return (DateTimeMeasureUnit)i;
}
return DateTimeMeasureUnit.Year;
}
}
Public Class CustomAutomaticDateTimeMeasureUnitsCalculator
Implements IDateTimeMeasureUnitsCalculator
Public Function CalculateMeasureUnit(
series As IEnumerable(Of Series),
axisLength As Double, pixelsPerUnit As Integer,
visualMin As Double, visualMax As Double,
wholeMin As Double, wholeMax As Double
) As DateTimeMeasureUnit Implements IDateTimeMeasureUnitsCalculator.CalculateMeasureUnit
Dim rawMeasureUnit As Double = ((visualMax - visualMin) _
* (pixelsPerUnit / axisLength))
Return PickDateTimeMeasureUnit(rawMeasureUnit)
End Function
Private Shared unitMultipliers As Integer() = {1, 1000, 60, 60, 24, 7, 4, 3, 4}
Private Shared Function PickDateTimeMeasureUnit(milliseconds As Double) As Double
Dim valueStop As Double = 1.0
For i As Integer = 0 To unitMultipliers.Length
valueStop *= unitMultipliers(i)
If (milliseconds <= valueStop) Then Return CType(i, DateTimeMeasureUnit)
Next
Return DateTimeMeasureUnit.Year
End Function
End Class
<dxc:ChartControl>
<dxc:XYDiagram2D>
<dxc:XYDiagram2D.AxisX>
<dxc:AxisX2D>
<dxc:AxisX2D.DateTimeScaleOptions>
<dxc:AutomaticDateTimeScaleOptions>
<dxc:AutomaticDateTimeScaleOptions.AutomaticMeasureUnitsCalculator>
<view:CustomAutomaticDateTimeMeasureUnitsCalculator/>
</dxc:AutomaticDateTimeScaleOptions.AutomaticMeasureUnitsCalculator>
</dxc:AutomaticDateTimeScaleOptions>
</dxc:AxisX2D.DateTimeScaleOptions>
</dxc:AxisX2D>
</dxc:XYDiagram2D.AxisX>
</dxc:XYDiagram2D>
</dxc:ChartControl>
See Also
IDateTimeMeasureUnitsCalculator Interface