我有一个WPF控件停靠在WinForms应用程序的WPF主机控件中。 WPF控件设置为水平和垂直拉伸,并且主控件停靠在锚定组框中。ScaleTransform在画布上调整缩小画布的速度高于儿童
我的WPF控件有一个Canvas,它填充了我用来放置从Canvas派生的自定义类的子元素的空间。
我订阅了主Canvas的SizeChanged事件并应用了一个缩放转换,以便在控件调整大小时,画布及其子项会缩小并像时尚一样成长,这是工作的,但由于某些原因,父项帆布的收缩率要比孩子们高得多,这使得儿童在某一点上从比例下降到画布上。
这是我的代码:
private void EditorCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (e.PreviousSize.Width == 0)
return;
double YDiff = e.PreviousSize.Height/e.NewSize.Height;
double XDiff = e.PreviousSize.Width/e.NewSize.Width;
Scale.ScaleY /= YDiff;
Scale.ScaleX /= XDiff;
}
画布的孩子们似乎在正确率进行缩放,并在画布上似乎以高得多的速度进行缩放。
有没有人看到任何理由/知道为什么会发生这种情况?行为
图片...请注意较小的面板
后面的空格前
缩放
发布解释问题的截图。 – 2013-03-11 17:33:10
你在哪里应用ScaleTransform?它至少不应该应用于该Canvas本身,因为在SizeChanged事件触发时已经改变了大小。 – Clemens 2013-03-11 17:46:13
这可能是问题所在。 ScaleTransform应用于整个画布上的SizeChanged事件。我会更多地考虑这一点。 – Gianni 2013-03-11 17:52:21