面板与百分比坐标

时间:2010-08-15 15:55:59

标签: wpf animation resize panel coordinates

我想使用一个面板,其子坐标指定为面板总宽度/高度的百分比。此外,我应该能够设置坐标属性的动画,例如使按钮从10%移动到50%的面板宽度。

我做了两次尝试:

  1. 使用网格并将大小指定为星号 - 这还不够,因为默认情况下AFAIK WPF无法为星星指定的距离属性设置动画。我找到了一个可以让我这样做的自定义类,它甚至可以工作,我认为这个解决方案过于复杂,我正在寻找更简单的东西。

  2. 使用具有固定宽度和高度的Canvas并将其放入Viewbox中 - 这是一个简单的解决方案,但在调整Viewbox大小时,Canvas的整个内容也会调整大小。我希望内容具有固定的大小。

  3. 是否有一个简单的解决方案,或者我应该实现自己的面板(或者可能扩展其中一个现有面板,即Canvas)?

    干杯!

2 个答案:

答案 0 :(得分:6)

我会:

  • 子类Canvas,可能称之为RelativeCanvasRatioCanvas
  • 添加两个附加属性:XRatioYRatio
  • 覆盖ArrangeOverride并循环遍历所有孩子。对于每个孩子,请使用XRatioYRatio以及ActualWidth的{​​{1}}和ActualHeight来计算和应用RelativeCanvas的值和Canvas.Left附加属性

您可以按如下方式使用它:

Canvas.Top

您可能希望在完成工作后添加的一件事是控制对齐。例如,我可能会将控件的 center 与指定的比例对齐,而不是左上角。

答案 1 :(得分:-1)

这里有一个:WPF Proportional Panel