본문 바로가기
프로그래밍

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

by ictlab 2023. 4. 28.

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 속성에 설정합니다