프로그래밍

c# wpf 에서 gif 애니메이션 파일을 디스플레이 하는 방법 (WpfAnimatedGif)

ictlab 2023. 4. 28. 02:34

WPF에서 GIF 애니메이션을 디스플레이하려면, 사용자 지정 컨트롤을 만들고, Image 컨트롤과 ImageBehavior를 사용해야 합니다. 먼저, NuGet에서 WpfAnimatedGif 라이브러리를 설치해야 합니다. 이 라이브러리를 사용하면 쉽게 GIF 애니메이션을 WPF에서 표시할 수 있습니다. 이제 샘플 코드를 살펴봅시다.



프로젝트에 WpfAnimatedGif 라이브러리를 설치하세요.

Install-Package WpfAnimatedGif -Version 1.4.23
새로운 WPF 컨트롤을 만듭니다. 이름을 GifImageControl로 지정하겠습니다.



GifImageControl.xaml에 다음과 같이 코드를 추가합니다.

<UserControl x:Class="GifImageControlNamespace.GifImageControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:animatedGif="clr-namespace:WpfAnimatedGif;assembly=WpfAnimatedGif"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Image x:Name="GifImage" Stretch="Uniform">
            <Image.Style>
                <Style TargetType="{x:Type Image}">
                    <Setter Property="animatedGif:ImageBehavior.AnimatedSource" Value="{Binding Source}"/>
                </Style>
            </Image.Style>
        </Image>
    </Grid>
</UserControl>










GifImageControl.xaml.cs에 다음과 같이 코드를 추가합니다.




using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;

namespace GifImageControlNamespace
{
    public partial class GifImageControl : UserControl
    {
        public static readonly DependencyProperty SourceProperty =
            DependencyProperty.Register("Source", typeof(BitmapImage), typeof(GifImageControl),
                new PropertyMetadata(null));

        public GifImageControl()
        {
            InitializeComponent();
            DataContext = this;
        }

        public BitmapImage Source
        {
            get { return (BitmapImage)GetValue(SourceProperty); }
            set { SetValue(SourceProperty, value); }
        }
    }
}
​



이제 GifImageControl을 사용하여 MainWindow.xaml에 GIF 애니메이션을 추가합니다.

<Window x:Class="WpfGifExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:GifImageControlNamespace"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <local:GifImageControl Source="pack://application:,,,/your_project_name;component/your_gif_file.gif"/>
    </Grid>
</Window>






여기서 `your_project_name은 프로젝트의 이름을 나타내고, your_gif_file.gif`는 프로젝트 내에 포함된 원하는 GIF 파일의 이름입니다. 프로젝트에 GIF 파일을 추가하고 '속성'에서 '빌드 작업'을 '리소스'로 설정하세요.



이제 MainWindow.xaml.cs 파일에 다음과 같은 코드를 추가하십시오.

using System.Windows;

namespace WpfGifExample
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}
​



마지막으로 애플리케이션을 실행하면, MainWindow에서 생성된 GifImageControl이 나타나며 GIF 애니메이션이 표시됩니다.

이 샘플 코드를 사용하여, WPF에서 GIF 애니메이션 파일을 쉽게 디스플레이 할 수 있는 사용자 지정 컨트롤인 GifImageControl을 만들었습니다. 이 컨트롤은 XAML에서 Source 속성으로 GIF 파일을 지정하여 사용할 수 있습니다.



WPF 사용자 지정 컨트롤인 GifImageControl에서 GIF 파일을 프로그래밍 방식으로 읽어오는 함수를 추가하겠습니다. 다음 코드를 GifImageControl.xaml.cs에 추가하세요.


using System.Windows;
using GifImageControlNamespace;

namespace WpfGifExample
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            // GifImageControl 인스턴스 생성
            GifImageControl gifControl = new GifImageControl();
            Content = gifControl;

            // LoadGifFromFile 함수를 호출하여 GIF 파일을 읽어옵니다.
            string gifFilePath = "path/to/your_gif_file.gif";
            gifControl.LoadGifFromFile(gifFilePath);
        }
    }
}




이렇게 하면, LoadGifFromFile 함수를 사용하여 GIF 파일을 불러올 수 있습니다. 이 함수는 입력된 파일 경로에서 GIF 파일을 찾고, 해당 파일을 GifImageControl의 Source 속성에 설정합니다