我正在使用来自this answer的调整大小代码,它在测试时非常有效,但当放入实际应用程序时(渲染时间较长),不再保持宽高比。如果您慢慢移动鼠标或在某些方向上摆动,您可以使控件扭曲出原始宽高比,并且在实际应用中似乎只发生一次。
我不是100%肯定,但我想知道它是否因为它使用ActualHeight
和ActualWidth
来计算当前比率,而且这些值可能并不总是最新的。
一些相关代码,其余部分可用于上面链接的问题:
调用拖动
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;
}
}