调整WPF Canvas控件的大小,不能正确保持宽高比

时间:2014-08-18 10:10:57

标签: c# wpf xaml

我正在使用来自this answer的调整大小代码,它在测试时非常有效,但当放入实际应用程序时(渲染时间较长),不再保持宽高比。如果您慢慢移动鼠标或在某些方向上摆动,您可以使控件扭曲出原始宽高比,并且在实际应用中似乎只发生一次。

我不是100%肯定,但我想知道它是否因为它使用ActualHeightActualWidth来计算当前比率,而且这些值可能并不总是最新的。

一些相关代码,其余部分可用于上面链接的问题:

调用拖动

this.CheckAspectRatio(ref dragDeltaHorizontal, ref dragDeltaVertical, item.ActualHeight / item.ActualWidth);

功能本身

private void CheckAspectRatio(ref double? dragDeltaHorizontal, ref double? dragDeltaVertical, double aspectRatio)
{
    double? dragValue = null;
    if (dragDeltaVertical.HasValue && dragDeltaHorizontal.HasValue)
    {
        dragValue = Math.Max(dragDeltaVertical.Value, dragDeltaHorizontal.Value);
    }
    else if (dragDeltaVertical.HasValue)
    {
        dragValue = dragDeltaVertical;
    }
    else if (dragDeltaHorizontal.HasValue)
    {
        dragValue = dragDeltaHorizontal;
    }

    if (dragValue.HasValue)
    {
        dragDeltaVertical = dragValue.Value * aspectRatio;
        dragDeltaHorizontal = dragValue;
    }
}

0 个答案:

没有答案