Maison > développement back-end > C++ > Comment animer un dessin au trait sur un canevas C# WPF à l'aide de code ?

Comment animer un dessin au trait sur un canevas C# WPF à l'aide de code ?

Linda Hamilton
Libérer: 2025-01-04 05:00:40
original
673 Les gens l'ont consulté

How to Animate Line Drawing on a C# WPF Canvas Using Code?

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>
Copier après la connexion

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...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal