为线的动画做扩展准备

This commit is contained in:
艾竹
2023-04-29 15:29:22 +08:00
parent 7d8b19e4e0
commit f4268b9fc2
23 changed files with 397 additions and 120 deletions

View File

@@ -104,7 +104,10 @@
Height="{Binding SinkConnectorInfo.ConnectorHeight}"
Visibility="{Binding IsSelected,Converter={StaticResource BooleanToVisibilityConverter}}" />
<Ellipse x:Name="ball" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}"
<Path x:Name="ball"
Stretch="Fill"
Data="{Binding AnimationViewModel.Path}"
Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}"
Width="{Binding ColorViewModel.LineWidth,Converter={StaticResource MathAddConverter},ConverterParameter=4}"
Height="{Binding ColorViewModel.LineWidth,Converter={StaticResource MathAddConverter},ConverterParameter=4}"
Panel.ZIndex="1" />

View File

@@ -41,8 +41,8 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (this.DataContext is ConnectionViewModel connector && connector.ColorViewModel != null)
{
connector.ColorViewModel.PropertyChanged -= Connector_PropertyChanged;
connector.ColorViewModel.PropertyChanged += Connector_PropertyChanged;
connector.AnimationViewModel.PropertyChanged -= Connector_PropertyChanged;
connector.AnimationViewModel.PropertyChanged += Connector_PropertyChanged;
}
this.ball.Visibility = Visibility.Collapsed;
await DoAnimation();
@@ -52,8 +52,8 @@ namespace AIStudio.Wpf.DiagramDesigner
{
switch (e.PropertyName)
{
case nameof(ColorViewModel.LineAnimation):
case nameof(ColorViewModel.LineAnimationDuration):
case nameof(AnimationViewModel.LineAnimation):
case nameof(AnimationViewModel.Duration):
await DoAnimation();
break;
@@ -65,7 +65,7 @@ namespace AIStudio.Wpf.DiagramDesigner
if (this.DataContext is ConnectionViewModel connector && connector.IsFullConnection)
{
await System.Threading.Tasks.Task.Delay(100);
switch (connector.ColorViewModel.LineAnimation)
switch (connector.AnimationViewModel.LineAnimation)
{
case LineAnimation.None:
_story?.Stop(this);
@@ -76,14 +76,14 @@ namespace AIStudio.Wpf.DiagramDesigner
{
connector.ColorViewModel.FillColor.Color = Colors.Red;
}
PathAnimation(connector.ColorViewModel.LineAnimationDuration);
PathAnimation(connector.AnimationViewModel.Duration);
break;
case LineAnimation.DashAnimation:
if (connector.ColorViewModel.LineDashStyle == LineDashStyle.None)
{
connector.ColorViewModel.LineDashStyle = LineDashStyle.Dash1;
}
DashAnimation(connector.ColorViewModel.LineAnimationDuration);
DashAnimation(connector.AnimationViewModel.Duration);
break;
}
}
@@ -128,11 +128,14 @@ namespace AIStudio.Wpf.DiagramDesigner
_story?.Stop(this);
_story = new Storyboard();
_story.RepeatBehavior = RepeatBehavior.Forever;
//_story.RepeatBehavior = RepeatBehavior.Forever;
//story.AutoReverse = true;
_story.Children.Add(animationX);
_story.Children.Add(animationY);
_story.Children.Add(animationAngle);
_story.Completed += (s, d) => {
_story.Begin(this, true);
};
Storyboard.SetTargetName(animationX, "translate");
Storyboard.SetTargetName(animationY, "translate");
Storyboard.SetTargetName(animationAngle, "rotate");