在两个方向上扩展宽度

时间:2016-01-24 19:40:22

标签: wpf vb.net

我正在尝试设置框宽度的动画,以便在左右方向上延伸。 当然它只是在正确的方向上延伸,我将如何在两者中延伸。大多数WPF代码都在C#中,所以我无法真正找到Google的答案。

Imports System.Windows.Media.Animation

Class MainWindow
    Private Sub EnlargeBtn_Click(sender As Object, e As RoutedEventArgs) Handles EnlargeBtn.Click

        Dim NewWidth = 300
        Dim widthAnimation As New DoubleAnimation(NewWidth, TimeSpan.FromMilliseconds(1000))
        Box.BeginAnimation(WidthProperty, widthAnimation)
    End Sub
End Class

2 个答案:

答案 0 :(得分:2)

您需要为左侧位置和宽度设置动画。

如果您可以更改左侧位置,则需要将宽度更改为您更改左侧属性的两倍,以使框在两个方向均匀增长。

如果您无法更改Rectangle的左侧或X属性(因为它似乎没有您可以访问的属性 - MSDN),那么唯一的解决方案可能是将它放在另一个容器(网格或边框)中并将其HorizontalAlignment设置为Center

答案 1 :(得分:0)

想出来,必须将HorizontalAlignment设置为Center并将左右边距移动一半宽度

Imports System.Windows.Media.Animation

Class MainWindow
    Private Sub EnlargeBtn_Click(sender As Object, e As RoutedEventArgs) Handles EnlargeBtn.Click

        Dim NewWidth = 300
        Dim widthAnimation As New DoubleAnimation(NewWidth, TimeSpan.FromSeconds(1))
        Dim marginAnimation As New ThicknessAnimation(New Thickness(Box.Margin.Left - NewWidth / 2, Box.Margin.Top, Box.Margin.Right - NewWidth / 2, 0), TimeSpan.FromSeconds(1))
        Box.BeginAnimation(WidthProperty, widthAnimation)
        Box.BeginAnimation(MarginProperty, marginAnimation)

    End Sub
End Class