显示动画GIF文件从嵌入的资源

本文关键字:资源 动画 GIF 文件 显示 | 更新日期: 2023-09-27 18:18:53

我试图从嵌入式资源在表单上显示动画GIF,但没有显示任何内容,这使我认为从流加载不这样工作

如果我放弃这个想法并从文件中加载,GIF将正确显示。

这是不会工作的东西,还是我在这条路上犯了一个错误?此外,这是在DLL内完成的。

我代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // Set the image
    this.pictureBox.Image = GetImageFromManifest("TempNamespace.Wait.gif");
    // Remove the close button
    var hwnd = new WindowInteropHelper(this).Handle;
    SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
}
public System.Drawing.Image GetImageFromManifest(string sPath)
{
    // Ready the return
    System.Drawing.Image oImage = null;
    try
    {
        // Get the assembly
        Assembly oAssembly = Assembly.GetAssembly(this.GetType());
        string[] names = oAssembly.GetManifestResourceNames();
        // Get the stream
        Stream oStream = oAssembly.GetManifestResourceStream(sPath);
        // Read from the stream
        oImage = System.Drawing.Image.FromStream(oStream);
    }
    catch (Exception ex)
    {
        // Missing image?           
    }
    //Return the image
    return oImage;
}
我的XAML

:

<wfi:WindowsFormsHost HorizontalAlignment="Center" VerticalAlignment="Center"  Height="50" Width="50">
    <winForms:PictureBox x:Name="pictureBox" Height="50" Width="50" SizeMode="StretchImage" BackgroundImageLayout="None"/>
</wfi:WindowsFormsHost>

显示动画GIF文件从嵌入的资源

总之,问题是由在XAML或构造函数中设置表单的'SizeToContent'值引起的(在我的例子中,它被设置为'SizeToContent. widthandheight ')。

删除此属性,并在'Loaded'事件中设置它可以纠正此问题。我假设当窗体本身没有绘制时,Windows窗体主机无法正确渲染动画GIF文件。