2016-01-24 2 views
1

Я пытаюсь анимировать ширину окна, чтобы она расширялась как влево, так и вправо. Конечно, это распространяется только в правильном направлении, как бы я мог распространить его на оба. Большинство кодов 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 
+1

Put 'Box' в сетке и установите его' 'HorizontalAlignment' к Center'. – Clemens

ответ

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 
2

Вам необходимо анимировать левую позицию и ширину.

Если вы можете изменить левую позицию, вам нужно будет изменить ширину в два раза больше, чем вы меняете свойство слева, чтобы получить коробку для равномерного роста в обоих направлениях.

Если вы не можете изменить свойство left или X на Rectangle (потому что у него нет одного, к которому вы можете получить доступ - MSDN), то единственным решением может быть его размещение в другом контейнере (сетка или Border) и установите его HorizontalAlignment на Center.

+0

Как бы то ни было, я пробовал анимировать поля, но это не работает, и я не могу найти свойство left для поля. – Porkchops

+0

@ Porkchops - Какой тип 'Box'? – ChrisF

+0

Это прямоугольник – Porkchops

Смежные вопросы