キャンバス上の描画を拡大するとき、スクロールバーを表示する必要があります。
キャンバスは 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;
Canvas が大きくなりすぎることがわかりました。図面は10%ズームインしていますが、幅は1.1の正方形のように20%増しになっているようです。だから私はMath.Sqrt(f);
の代わりに使用しf
ます。
なぜこのように動作するのか、誰か説明できますか?