我有一个 WPF 控件停靠在 WinForms 应用程序中的 WPF 主机控件中。WPF 控件设置为水平和垂直拉伸,并且宿主控件停靠在锚定的组框中。
我的 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;
}
画布的子项似乎以正确的速率缩放,并且画布似乎以更高的速率缩放。
有没有人看到任何原因/知道可能发生这种情况的任何原因?
行为图片...注意较小面板后面的空白区域
前
缩放