void AddForceTicksToCanvas() { Canvas canvas = cvsForceTicks; double height = canvas.ActualHeight; canvas.Children.Clear(); double maxForce; if (Session.StepDiagram != null) { maxForce = Session.StepDiagram.MaxForce; } else { maxForce = 2.5; } int numSteps = 5; if (height < 80) { numSteps = (int)Math.Floor(height / 20); } double rawStep = maxForce / numSteps; double tenthPower = 0; while (rawStep > 0 && rawStep <= 1.0) { rawStep = rawStep * 10; tenthPower++; } double step = Math.Round(rawStep) / Math.Pow(10, tenthPower); double upperBound = maxForce + step; for (double force = 0; force < upperBound; force += step) { double y = ConversionHelper.AvailableHeight - ConversionHelper.ForceToPixels(force); if (y < 0) { continue; } double lineLeft = 3 * canvas.ActualWidth / 4; Line newLine = GetForceTickLine(canvas, lineLeft, y); canvas.Children.Add(newLine); TextBlock label = GetForceTickLabel(force, lineLeft, y); canvas.Children.Add(label); } Line rightEdgeLine = new Line(); rightEdgeLine.X1 = canvas.ActualWidth; rightEdgeLine.X2 = canvas.ActualWidth; rightEdgeLine.Y1 = 0; rightEdgeLine.Y2 = ConversionHelper.AvailableHeight; rightEdgeLine.StrokeThickness = 1; rightEdgeLine.Stroke = Brushes.LightGray; canvas.Children.Add(rightEdgeLine); }
public void SetAvailableHeight() { ConversionHelper.SetAvailableHeight(lstSteps.ActualHeight - SystemParameters.ScrollHeight - GetHorizontalAxisHeight()); AddForceTicksToCanvas(); }