WPF显示apng等格式动态图片格式展示

本文介绍了在WPF项目中如何解决显示apng动态图片的问题。传统方法如使用Image控件或WebView控件存在效率和依赖问题。作者提出了一种新的思路,利用WPF的动画特性,将apng、gif等动态图片分解为帧图片,通过关键帧动画控制Image控件显示每一帧,从而实现动态效果。这种方法避免了前后台交互导致的线程卡死和额外控件引用的复杂性。

在WPF项目开发中遇到要显示apng格式的动态图片问题,gif有第三方控件显示,但是apng显示比较麻烦,在网上看到两种方式:

  1. 使用Image控件,通过后台代码定时显示每一帧图片

  2. 使用WebView控件(该控件本来是用于显示网页的),将apng格式图片发布成网络图片,然后将图片地址赋给控件

    这两种缺点:第一种前后台线程有交互,后台代码线程容易出现卡死效率不高 第二种需要引用额外的网页显示控件,并且发布网络图片比较麻烦

    因此想利用wpf本身的动画特性实现apng,gif等格式动图展示,想法是将动态图片apng、gif等格式图片使用动图分解工具Apng格式动图分解工具或者 gif格式分解工具(也可以自己写代码拆分)将动图拆分成一帧一帧图片,然后每一帧都显示在单个Image控件上重叠在Grid控件,然后使用wpf关键帧动画控制每一帧Image控件的显示,实际使用的时候加载拆分图片的过程只加载一次就行。这样就可以加载展示任意格式动图了
    前台代码:

<Window x:Class="WpfApp2.MainWindow4"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow4" Height="500" Width="800">
    <Grid Width="204" Height="272" x:Name="DynamicImages">

    </Grid>
</Window>
后台代码:
    public partial class MainWindow4 : Window
    {
   
   
        public MainWindow4()
        {
   
   
            InitializeComponent();
            DynamicImagesAnimation dynamicImagesAnimation =
                new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值