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>
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... }
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!