【问题标题】:How to display (transparent) animated gif in a Visual Studio extension panel?如何在 Visual Studio 扩展面板中显示(透明)动画 gif?
【发布时间】:2019-08-26 14:12:06
【问题描述】:

我正在用 C# 开发一个 Visual Studio 扩展,我想在工具窗口面板中显示一个(等待中的)透明动画 gif。

我用谷歌搜索了很多,我只能找到非常复杂的解决方案,涉及特殊的专用库或一些等效的源代码添加到我的项目中。例如,我可以找到这个帖子:How do I get an animated gif to work in WPF?。但我不明白为什么它需要如此复杂的解决方案来处理像动画 gif 这样的基本功能。

XAML 不能支持原生动画 gif 吗?

在我这边,我在我的 XAML 文件中尝试了以下内容:

<Image Source="pack://application:,,,/MyPlugin;component/Resources/busy.gif" 
       Width="16" Height="16"/>

在 Visual Studio 处于编辑模式时加载图像(虽然不是动画)。但是,图像NEVER显示在实验实例中。

我错过了什么?

【问题讨论】:

  • 嗨!我看到了这个帖子。但是,如前所述,对于显示动画 gif 这样的基本功能,除了所有这些复杂的东西之外,难道没有其他解决方案吗?本机不支持?
  • 您不会在 wpf 中使用 gif,而是使用 storyboard。不支持开箱即用的 Gif,因此如果您想使用 wpf,请使用为您提供的工具
  • 嗨,这个问题有什么更新吗?

标签: c# visual-studio-extensions


【解决方案1】:

例如,我可以找到这篇文章:How do I get an Animation gif to to 在 WPF 中工作?但我不明白为什么它需要这样 像动画 gif 这样的基本功能的复杂解决方案。

有一些简单的方法可以在 wpf 中显示 .gif。对我来说,我使用WpfAnimatedGif来做到这一点。只需安装nuget包并添加相应的xmlns,然后gif可以显示在wpf或vs扩展中。

对于WpfAnimatedGif

1.将xmlns:gif="http://wpfanimatedgif.codeplex.com"添加到xx.xaml中。

2.&lt;Image gif:ImageBehavior.AnimatedSource="xxx/xxx.gif" /&gt;

那么.gif就可以显示在vs扩展中了。

The format in my project:

<UserControl x:Class="VSIXProject2.ToolWindow1Control"
             ...
             xmlns:gif="http://wpfanimatedgif.codeplex.com"
             xmlns:vsshell="clr-namespace:Microsoft.VisualStudio.Shell;assembly=Microsoft.VisualStudio.Shell.15.0"
             Background="{DynamicResource {x:Static vsshell:VsBrushes.WindowKey}}"
             Foreground="{DynamicResource {x:Static vsshell:VsBrushes.WindowTextKey}}"
             mc:Ignorable="d"
             d:DesignHeight="300" d:DesignWidth="300"
             Name="MyToolWindow">
    <Grid>
        <StackPanel Orientation="Vertical">
            ...
            <Image gif:ImageBehavior.AnimatedSource="pack://application:,,,/VSIXProject2;component/Resources/time.gif" Height="100" Width="200"/>
        </StackPanel>
    </Grid>
</UserControl>

注意:要在调试VS扩展时显示图片,源格式应为pack://application:,,,/xxx;component/Resources/xxx.gif。这是 vsix 中普通 wpf 和 ToolWindows 之间的不同行为。更多详情见this

【讨论】:

  • 嗨兰斯!感谢您的回复。我按照您的建议安装了 nuget 包并添加了新的 xmlns 语句。看起来网站已经转移到 github 但 xmlns 仍然要引用旧的(新的会发出错误)。不幸的是,它不起作用,并且在启动时出现以下异常:“无法加载文件或程序集 'WpfAnimatedGif, PublicKeyToken=null' 或其依赖项之一。系统找不到指定的文件。”
  • 它可以在我的 VS2017 工作机器上运行,你的 vs 版本是什么?我还没来得及在VS2019中尝试它。并且根据错误信息,您需要检查程序集是否在您的 xx.vsix 包中。将其重命名为 xx.zip 并检查其内容。
猜你喜欢
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多