【发布时间】:2014-03-04 11:09:26
【问题描述】:
在 Canvas 上放大绘图时,我需要显示滚动条。
Canvas 位于 ScrollViewer 中,我增加了 Canvas 的宽度/高度,以便出现 scollbars(否则它们不会出现)。
要放大 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。
谁能解释它为什么会这样?
【问题讨论】:
-
您似乎应用了两次缩放因子,第一次是 LayoutTransform,第二次是乘以 Width 和 Height。你应该只做其中之一,最好只做 LayoutTransform。
-
然后滚动条不出现(这是一个要求)。
标签: wpf canvas scrollviewer matrix-transform