gpt4 book ai didi

c# - Canvas 上的 ScaleTransform 调整大小以比 child 更高的速度缩小 Canvas

转载 作者:太空宇宙 更新时间:2023-11-03 19:17:15 25 4
gpt4 key购买 nike

我有一个 WPF 控件停靠在 WinForms 应用程序的 WPF 主机控件中。 WPF 控件设置为水平和垂直拉伸(stretch),宿主控件停靠在锚定的组框中。

我的 WPF 控件有一个 Canvas 填充它的空间,我用它来放置子项,这些子项是派生自 Canvas 的自定义类。

我订阅了主 Canvas 的 SizeChanged 事件并应用了缩放变换,以便在调整控件大小时, Canvas 及其子项会像时尚一样缩小和增长,这是有效的,但由于某种原因,父 Canvas 以比子项高得多的速度收缩,使子项在某一点由于缩放率而从 Canvas 上脱落。

这是我的代码:

    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;
}

Canvas 的子项似乎以正确的速率缩放,并且 Canvas 似乎以更高的速率缩放。

有没有人看到任何原因/知道这可能发生的任何原因?

行为图片...注意较小面板后面的空白

之前 IMG

缩放 IMG

最佳答案

这个:

I subscribed to the main Canvas' SizeChanged event and applied a scale transform so that the canvas and its children would shrink and grow in a zoom like fashion when the control is resized, which is working, but for some reason the parent canvas is shrinking at a much higher rate than the children, making the children fall off of the canvas at a certain point because of the scale rate.

Viewbox 的作用。将 Viewbox 作为 WPF 可视化树中的根元素。并将其 Stretch 属性设置为适合您需要的值。并删除所有尺寸计算。 WPF 不需要计算大小。

关于c# - Canvas 上的 ScaleTransform 调整大小以比 child 更高的速度缩小 Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15344834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com