protected override void ApplyInverseScaling() { //apply inverse scaling to keyframes //pan/zoom var m = PanZoomGroup.Transforms[0].Matrix; var s1 = new SvgScale(m.Elements[0], m.Elements[3]); //min/max m = PanZoomGroup.Transforms[1].Matrix; var s2 = new SvgScale(m.Elements[0], m.Elements[3]); //trackheight m = TrackGroup.Transforms[0].Matrix; m.Multiply(s2.Matrix); m.Multiply(s1.Matrix); m.Invert(); KeyframeDefinition.Transforms[0] = new SvgMatrix(m.Elements.ToList()); EaseInDefinition.Transforms[0] = KeyframeDefinition.Transforms[0]; EaseOutDefinition.Transforms[0] = KeyframeDefinition.Transforms[0]; EaseInOutDefinition.Transforms[0] = KeyframeDefinition.Transforms[0]; EaseNoneDefinition.Transforms[0] = KeyframeDefinition.Transforms[0]; }
protected virtual void ApplyInverseScaling() { //apply inverse scaling to numbers //pan/zoom var m = PanZoomGroup.Transforms[0].Matrix; var inv = new SvgScale(1 / m.Elements[0], 1); var nums = NumberGroup.Children.Where(x => x is SvgText); foreach (var num in nums) { num.Transforms[1] = inv; } //..to loopregion handler LoopStart.Width = 1 / m.Elements[0] * CHandlerWidth; LoopEnd.Width = 1 / m.Elements[0] * CHandlerWidth; }