void AddVerticalDayMarks(GeometryGroup geometryGroup) { DateTime dtStart = StartOfScale; DateTime dtEnd = EndOfScale; Int64 dtStartTicks = dtStart.Ticks; Int64 dtEndTicks = dtEnd.Ticks; Int32 dtStartNumberOfDays = (Int32)(dtStartTicks / TimeSpan.TicksPerDay); Int32 dtEndNumberOfDays = (Int32)(dtEndTicks / TimeSpan.TicksPerDay); int numberOfDayMarks = (Int32)(dtEndNumberOfDays - dtStartNumberOfDays); DayMarks = new List <Mark>(numberOfDayMarks); TransformWorldToScreen.PrepareTransformations(dtStartTicks, dtEndTicks, 0, this.actualHeight, 0, this.actualWidth, this.actualHeight, 0); int dayNumber = dtEndNumberOfDays; Point worldPointOnTheLine = new Point(0, 0); Point worldPointUnderTheLine = new Point(0, 0); Point devicePointOnTheLine = new Point(0, 0); Point devicePointUnderTheLine = new Point(0, 0); for (int dayMark = numberOfDayMarks; dayMark > 0; dayMark--) { worldPointOnTheLine.X = dayNumber * TimeSpan.TicksPerDay; worldPointOnTheLine.Y = 0; worldPointUnderTheLine.X = dayNumber * TimeSpan.TicksPerDay; worldPointUnderTheLine.Y = 10; devicePointOnTheLine = TransformWorldToScreen.WtoD(worldPointOnTheLine); devicePointUnderTheLine = TransformWorldToScreen.WtoD(worldPointUnderTheLine); geometryGroup.Children.Add(new LineGeometry(devicePointOnTheLine, devicePointUnderTheLine)); DayMarks.Add(new Mark(devicePointOnTheLine, devicePointUnderTheLine, dayNumber)); dayNumber--; } }
void AddVerticalHourMarks(GeometryGroup geometryGroup) { DateTime dtStart = StartOfScale; DateTime dtEnd = EndOfScale; Int64 dtStartTicks = dtStart.Ticks; Int64 dtEndTicks = dtEnd.Ticks; Int32 dtStartNumberOfHours = (Int32)(dtStartTicks / TimeSpan.TicksPerHour); Int32 dtEndNumberOfHours = (Int32)(dtEndTicks / TimeSpan.TicksPerHour); int numberOfHourMarks = (Int32)(dtEndNumberOfHours - dtStartNumberOfHours); HourMarks = new List <Mark>(numberOfHourMarks); TransformWorldToScreen.PrepareTransformations(dtStartTicks, dtEndTicks, 0, this.actualHeight, 0, this.actualWidth, this.actualHeight, 0); int hourNumber = dtEndNumberOfHours; Point worldPointOnTheLineAtTheStart = new Point(dtStartTicks, 0); Point worldPointOnTheLineAtTheEnd = new Point(dtEndTicks, 0); hourMarkDistance = (WtoD(worldPointOnTheLineAtTheEnd).X - WtoD(worldPointOnTheLineAtTheStart).X) / numberOfHourMarks; if (hourMarkDistance > MinHourMarksGapSize) { Point worldPointOnTheLine = new Point(0, 0); Point worldPointUnderTheLine = new Point(0, 0); Point devicePointOnTheLine = new Point(0, 0); Point devicePointUnderTheLine = new Point(0, 0); for (int hourMark = numberOfHourMarks; hourMark > 0; hourMark--) { worldPointOnTheLine.X = hourNumber * TimeSpan.TicksPerHour; worldPointOnTheLine.Y = 0; worldPointUnderTheLine.X = hourNumber * TimeSpan.TicksPerHour; worldPointUnderTheLine.Y = 5; devicePointOnTheLine = TransformWorldToScreen.WtoD(worldPointOnTheLine); devicePointUnderTheLine = TransformWorldToScreen.WtoD(worldPointUnderTheLine); geometryGroup.Children.Add(new LineGeometry(devicePointOnTheLine, devicePointUnderTheLine)); HourMarks.Add(new Mark(devicePointOnTheLine, devicePointUnderTheLine, hourNumber)); hourNumber--; } } }