public AxisPartControl <DateTime> GetPart(Range <DateTime> r)
        {
            DateTime center = new DateTime((r.Min.Ticks + r.Max.Ticks) / 2);

            IAxisPart <DateTime> part = storage.GetPart(r, center);

            if (part != null)
            {
                return(part.Control);
            }
            else
            {
                DateTimeAxisPart dnPart = new DateTimeAxisPart(r.Min, r.Max);
                dnPart.Control.LabelProvider = parentAxis.LabelProvider.Clone();
                if (parentAxis.MayorLabelProvider != null)
                {
                    dnPart.Control.MayorLabelProvider = parentAxis.MayorLabelProvider.Clone();
                }
                dnPart.Control.TicksProvider   = parentAxis.TicksProvider.Clone();
                dnPart.Control.ConvertToDouble = parentAxis.ConvertToDouble;
                dnPart.Control.Placement       = parentAxis.Placement;
                dnPart.Control.Range           = r;

                storage.AddPart(dnPart);
                return(storage.GetPart(r, center).Control);
            }
        }
예제 #2
0
        private void regenPart(Range <DateTime> range)
        {
            long     length = range.Max.Ticks - range.Min.Ticks;
            DateTime start  = (DateTime.MinValue.Ticks > range.Min.Ticks - length)?(DateTime.MinValue):(new DateTime(range.Min.Ticks - length));
            DateTime end    = (DateTime.MaxValue.Ticks < range.Max.Ticks + length)?(DateTime.MaxValue):(new DateTime(range.Max.Ticks + length));

            activeRange    = new Range <DateTime>(start, end);
            resultArray[0] = activeRange;

            activePart = new DateTimeAxisPart(range.Min, range.Max);
            activePart.Control.LabelProvider = parentAxis.LabelProvider.Clone();
            if (parentAxis.MayorLabelProvider != null)
            {
                activePart.Control.MayorLabelProvider = parentAxis.MayorLabelProvider.Clone();
            }
            activePart.Control.TicksProvider   = parentAxis.TicksProvider.Clone();
            activePart.Control.ConvertToDouble = parentAxis.ConvertToDouble;
            activePart.Control.Placement       = parentAxis.Placement;
            activePart.Control.Range           = activeRange;
        }
예제 #3
0
 public void CleanCach()
 {
     inited     = false;
     activePart = null;
 }