Heim > Backend-Entwicklung > C++ > Wie animiere ich Strichzeichnungen auf einer C#-WPF-Leinwand mithilfe von Code?

Wie animiere ich Strichzeichnungen auf einer C#-WPF-Leinwand mithilfe von Code?

Linda Hamilton
Freigeben: 2025-01-04 05:00:40
Original
689 Leute haben es durchsucht

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

Animierte Linien auf einer Leinwand in C# erstellen

In diesem Artikel erfahren Sie, wie Sie eine Animation einer nach und nach gezogenen Linie erstellen eine Leinwand in einem C#/WPF-Projekt mithilfe von Code statt XAML.

Implementierung

Die Implementierung beinhaltet die Verwendung eines Canvas innerhalb einer ListBox, um die Zeilen zu erstellen. Jede Linie wird durch ein LineViewModel dargestellt, das Eigenschaften für Koordinaten, Farben, Dicke und Deckkraft enthält.

Ein Timer wird verwendet, um die Linienkoordinaten im Laufe der Zeit zu aktualisieren und die Bewegung der Linie über die Leinwand zu animieren. Die AnimationSpeed-Eigenschaft steuert die Geschwindigkeit der Animation.

XAML-Code

Das XAML für die ListBox und ihre Elementvorlage sieht wie folgt aus:

<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>
Nach dem Login kopieren

ViewModel

Die LineViewModel-Klasse ist für die Verwaltung der Eigenschaften und Animationen der einzelnen Klassen verantwortlich line:

public class LineViewModel : INotifyPropertyChanged
{
    // ...properties and animation implementation...
}
Nach dem Login kopieren

Verwendung

Um die Animation zu verwenden, können Sie LineViewModel-Objekte zum DataContext der ListBox hinzufügen. Die Animate-Eigenschaft kann verwendet werden, um die Animation zu starten oder zu stoppen.

Fazit

Mit den oben beschriebenen Techniken können Sie animierte Linien auf einer Leinwand in einem C#/ erstellen. WPF-Projekt ohne Rückgriff auf XAML. Der timerbasierte Ansatz bietet eine einfache und flexible Möglichkeit, die Geschwindigkeit und das Verhalten der Animation zu steuern.

Das obige ist der detaillierte Inhalt vonWie animiere ich Strichzeichnungen auf einer C#-WPF-Leinwand mithilfe von Code?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage