Skip to main content
A newer version of this page is available. .

AutomaticDateTimeScaleOptions.AutomaticMeasureUnitsCalculator Property

Gets or sets the automatic date-time measure unit calculator.

Namespace: DevExpress.Xpf.Charts

Assembly: DevExpress.Xpf.Charts.v19.1.dll

Declaration

[Browsable(false)]
public IDateTimeMeasureUnitsCalculator AutomaticMeasureUnitsCalculator { get; set; }

Property Value

Type Description
IDateTimeMeasureUnitsCalculator

An object of the class implementing the IDateTimeMeasureUnitsCalculator interface.

Example

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;
    }
}

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the AutomaticMeasureUnitsCalculator property.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

See Also