Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menghidupkan Lukisan Garisan pada Kanvas C# WPF Menggunakan Kod?

Bagaimana untuk Menghidupkan Lukisan Garisan pada Kanvas C# WPF Menggunakan Kod?

Linda Hamilton
Lepaskan: 2025-01-04 05:00:40
asal
655 orang telah melayarinya

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

Mencipta Garis Animasi pada Kanvas dalam C#

Dalam artikel ini, kita akan meneroka cara mencipta animasi garisan yang dilukis secara beransur-ansur merentasi kanvas dalam projek C#/WPF menggunakan kod dan bukannya XAML.

Pelaksanaan

Pelaksanaan melibatkan penggunaan Kanvas dalam ListBox untuk mencipta garisan. Setiap baris diwakili oleh LineViewModel yang mengandungi sifat untuk koordinat, warna, ketebalan dan kelegapan.

Pemasa digunakan untuk mengemas kini koordinat garisan dari semasa ke semasa, menghidupkan pergerakan garisan merentasi kanvas. Sifat AnimationSpeed ​​mengawal kelajuan animasi.

Kod XAML

XAML untuk ListBox dan templat itemnya kelihatan seperti berikut:

<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>
Salin selepas log masuk

ViewModel

Kelas LineViewModel bertanggungjawab untuk menguruskan sifat dan animasi setiap baris:

public class LineViewModel : INotifyPropertyChanged
{
    // ...properties and animation implementation...
}
Salin selepas log masuk

Penggunaan

Untuk menggunakan animasi, anda boleh menambah objek LineViewModel pada DataContext ListBox. Sifat Animate boleh digunakan untuk memulakan atau menghentikan animasi.

Kesimpulan

Menggunakan teknik yang diterangkan di atas, anda boleh mencipta garis animasi pada kanvas dalam C#/ Projek WPF tanpa menggunakan XAML. Pendekatan berasaskan pemasa menyediakan cara yang mudah dan fleksibel untuk mengawal kelajuan dan tingkah laku animasi.

Atas ialah kandungan terperinci Bagaimana untuk Menghidupkan Lukisan Garisan pada Kanvas C# WPF Menggunakan Kod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan