gpt4 book ai didi

c# - 如何在WP 7中使用gif动画图片

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:43 25 4
gpt4 key购买 nike

我看过这个帖子:Display GIF in a WP7 application with Silverlight

但就我而言呢?为了制作动画,我正在使用弹出窗口。因此,当应用程序启动时,它会显示一个弹出窗口 5 秒钟。在此弹出窗口中,我想显示一些 .gif 图像,但它不起作用。

这是我实现的代码:

    public partial class AnimatedSplashScreen : UserControl
{
protected Uri ImageSource
{
get;
set;
}
public AnimatedSplashScreen()
{
InitializeComponent();
ImageSource =
new Uri(
"http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Sunflower_as_GIF.gif/200px-Sunflower_as_GIF.gif",
UriKind.Absolute);
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();

}

xaml代码是:

<UserControl.Resources>

<imagetools:ImageConverter x:Key="ImageConverter" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot"
Width="480"
Height="800"
Background="White">
<imagetools:AnimatedImage Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}" />

但结果它不起作用,它显示一个空的背景。

更新:ImageTools.IO.Decoders.AddDecoder(); ImageSource = new Uri("http://a3.twimg.com/profile_images/1136683647/hisoka_normal.gif ", UriKind.Absolute); 还是不行

最佳答案

终于开始工作了……谈谈对你不利的事件……你需要先解决所有这些问题!

(请注意,只有前 2 帧被动画化,但这是另一个问题):

第 6 部分(现在开始困了)

最后,ImageTools.Controls.ImageConverter 不支持以“/”开头的相对图像 URL,因此您需要使用不带前导“/”的相对 URL。我发现,一旦其他所有问题都得到解决,我就会遇到路径不受支持的异常。

        ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
InitializeComponent();
this.ImageSource = new Uri("layer1.gif", UriKind.Relative);
this.DataContext = this;

第 5 部分

您需要在某处设置绑定(bind) DataContext。

您没有将 XAML 页面 DataContext 连接到代码隐藏对象。我看不出你在哪里做的。一种非常简单/快速的方法是在页面的构造函数中设置 this.DataContext = this;

第 4 部分

您只能绑定(bind)到公共(public)属性!

您的 ImageSource 属性当前受到保护。将其更改为 Public

    public Uri ImageSource
{
get;
set;
}

第 3 部分

我还注意到您的 ImageSource 属性不是 INotifyPropertyChange 类型的属性。所以在 InitializeComponent 之后设置它是行不通的。

以这种方式尝试(或将其更改为使用通知属性):

public AnimatedSplashScreen()
{
ImageSource =
new Uri(
"/200px-Sunflower_as_GIF.gif",
UriKind.Relative);
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
InitializeComponent();
}

第二部分(实际上ImageTools.Controls.ImageConverter不支持)

跨域文件显然只是一个问题。根据评论,您还需要将图像存储在自己的网站上,并使用适当的 URI 格式引用它们。

如果您将文件放在 ClientBin 下名为 images 的文件夹中,您可以使用以下格式:

"/images/imagename.jpg"

这是最佳选择,因为图像还使用浏览器缓存!

对于你的例子,它会是这样的:

    ImageSource =
new Uri(
"/images/200px-Sunflower_as_GIF.gif",
UriKind.Relative);
ImageTools.IO.Decoders.AddDecoder<GifDecoder>();

并将示例文件放在图像下的客户端 bin 文件夹中。

如果您不使用前导“/”,Silverlight 会假定文件是当前模块中的资源,例如

"images/imagename.jpg"

第 1 部分

这实际上是一个版权问题,以阻止人们在未经许可的情况下从其他人的网站深度链接文件。

Wikimedia.org 站点没有任何跨域访问文件,例如:

...大概是因为他们不希望其他人使用他们在自己网站之外托管的文件。

这意味着 Silverlight 将不允许访问这些站点上的文件,因为它是优秀的 Internet 公民。尝试将文件托管在您自己的站点(您的 Silverlight 应用程序所在的位置),然后它根本不需要任何跨域访问文件。

旁注:如果您确实需要网站上的跨域文件供 Silverlight 使用,请使用 crossdomainpolicy.xml,因为另一个没那么有用(专为较旧的 Flash 使用而设计)

关于c# - 如何在WP 7中使用gif动画图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com