コード例 #1
0
 private void SyncScale(DoubleAxisBase destination)
 {
     if (IsRelative)
         ScaleRelative(ProxyAxis, destination);
     else
         destination.SetBounds(ProxyAxis.ActualLowerBound, ProxyAxis.ActualUpperBound);
 }
コード例 #2
0
        private static void ScaleRelative(DoubleAxisBase source, DoubleAxisBase destination)
        {
            var normFactor = source.UpperBound - source.LowerBound;
            var ls0 = source.LowerBound / normFactor;
            var us0 = source.UpperBound / normFactor;
            var ls1 = source.ActualLowerBound / normFactor;
            var us1 = source.ActualUpperBound / normFactor;

            // Das hier sind jetzt relative Differenzen, da wir oben normiert haben
            var dls = ls1 - ls0; // Bedeutet: "x % von der Länge des Ursprungs-Vektors
            var dus = us1 - us0;

            // Destination:
            var destinationLength = destination.UpperBound - destination.LowerBound;
            var newLower = destination.LowerBound + dls * destinationLength;
            var newUpper = destination.UpperBound + dus * destinationLength;
            destination.SetBounds(newLower, newUpper);
        }