Création de lignes animées sur un canevas en C#
Dans cet article, nous explorerons comment créer une animation d'une ligne dessinée progressivement un canevas dans un projet C#/WPF utilisant du code plutôt que XAML.
Implémentation
L'implémentation implique l'utilisation d'un Canvas dans une ListBox pour créer les lignes. Chaque ligne est représentée par un LineViewModel qui contient des propriétés de coordonnées, de couleurs, d'épaisseur et d'opacité.
Une minuterie est utilisée pour mettre à jour les coordonnées de la ligne au fil du temps, animant le mouvement de la ligne sur le canevas. La propriété AnimationSpeed contrôle la vitesse de l'animation.
Code XAML
Le XAML de la ListBox et de son modèle d'élément se présente comme suit :
<ListBox ItemsSource="{Binding}" x:Name="lst" Height="500" Width="500"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <Canvas IsItemsHost="True"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="FocusVisualStyle"> <Setter.Value> <Style TargetType="Control"> <Setter Property="Opacity" Value="0"/> </Style> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBoxItem"> <Line X1="{Binding X1}" Y1="{Binding Y1}" X2="{Binding X2}" Y2="{Binding Y2}" StrokeThickness="{Binding Thickness}" Opacity="{Binding Opacity}" x:Name="Line"> <Line.Stroke> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="{Binding Color1}" Offset="0"/> <GradientStop Color="{Binding Color2}" Offset="1"/> </LinearGradientBrush> </Line.Stroke> </Line> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="true"> <Setter Property="Effect" TargetName="Line"> <Setter.Value> <DropShadowEffect Color="CornflowerBlue" ShadowDepth="3" BlurRadius="10"/> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </ListBox.ItemContainerStyle> </ListBox>
ViewModel
La classe LineViewModel est chargée de gérer les propriétés et l'animation de chacun line:
public class LineViewModel : INotifyPropertyChanged { // ...properties and animation implementation... }
Usage
Pour utiliser l'animation, vous pouvez ajouter des objets LineViewModel au DataContext de la ListBox. La propriété Animate peut être utilisée pour démarrer ou arrêter l'animation.
Conclusion
En utilisant les techniques décrites ci-dessus, vous pouvez créer des lignes animées sur un canevas en C#/ Projet WPF sans recourir à XAML. L'approche basée sur une minuterie offre un moyen simple et flexible de contrôler la vitesse et le comportement de l'animation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!