Когато увеличавам мащаба на чертеж върху платно, имам изискване да показвам ленти за превъртане.
Платното е в ScrollViewer и аз увеличавам ширината/височината на платното, така че лентите за превъртане да се показват (иначе не се появяват).
За да увелича мащаба с коефициент 1,1, използвам този код:
Matrix m = this.LayoutTransform.Value;
if (e.Delta > 0) f = 1.1;
else f = 1.0 / 1.1;
m.Scale(f, f);
this.LayoutTransform = new MatrixTransform(m);
this.Height = this.ActualHeight * f;
this.Width = this.ActualWidth * f;
Оказва се, че платното става твърде голямо. Чертежът се увеличава с 10%, но ширината изглежда става с 20% повече като квадрат от 1,1. Така че използвам Math.Sqrt(f);
вместо f
.
Може ли някой да обясни защо се държи по този начин?