Частота кадров подобна частоте кадров фильма.
Низкая частота кадров даст вам прерывистый фильм или прерывистую анимацию.
Использование док-панели, вероятно, является плохой идеей для некоторыхконтент, который вы собираетесь анимировать, потому что он будет пытаться настраивать вещи каждый раз, когда ваш рост меняется.
Я предлагаю вместо этого использовать сетку.
Вам следует использовать масштабирование.Частично потому, что, когда вы оживите высоту, вы обнаружите, что все содержимое вашего usercontrol лишено своих мер и они захотят запустить весь цикл аранжировки много раз.
Если вы думаете, аранжировка меры?Затем прочитайте о том, как работает система макетов wpf.
Я бы также посоветовал вам использовать xaml, а не код.
Вот некоторый код для размышлений:
private void StartAnimate_Click(object sender, RoutedEventArgs e)
{
var tran = testRectangle.RenderTransform = new ScaleTransform(1d, 1d)
{
CenterX = 0.5d,
CenterY = 0.5d
};
var anim = new DoubleAnimation
{
To = 1.0,
From=0,
Duration = TimeSpan.FromSeconds(0.5d),
DecelerationRatio = 0.5d,
FillBehavior = FillBehavior.Stop
};
tran.BeginAnimation(
ScaleTransform.ScaleYProperty,
anim,
HandoffBehavior.Compose);
}
Я помещаю прямоугольник и мою кнопку в док-панель, чтобы доказать, что это работает.
<DockPanel>
<Rectangle Fill="Blue" Name="testRectangle"
Width="500"
/>
<Button Content="Animate"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Name="StartAnimate"
Click="StartAnimate_Click" />
</DockPanel>
Прямоугольник довольно прост, но он плавно анимируется.