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; }
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()); CollapsedKeyframeDefinition.Transforms[0] = KeyframeDefinition.Transforms[0]; }