さて、これは解決されました。それが私の側の不具合だったのか、それともImageToolsをそれに応じて設定するのが面倒だったのかはわかりません。皆さんの回答に感謝します、そして彼らはおそらくすべてうまくいくでしょう。回答済みとしてマークした後は実際に機能しますが、方法は次のとおりです。
(クレジットはこれに固執するためにパトリックに行きます、そして彼のコードは以下に記されているように使われます。)
(また、何かを提出してくれた他のみんなにも感謝します。私の初心者があなたを怖がらせたらごめんなさい)
アニメーションGIFをwp77.1アプリで機能させるには、次の手順を実行します。
1)ImageToolsをダウンロードします(当時は最新バージョン(0.3)を使用していました)http://imagetools.codeplex.com/downloads/get/156530
2)ファイルを解凍し、[Bin> Phone]フォルダーで、すべてのdllファイル拡張子をwp7アプリフォルダーにスローします。他のファイル(xml / pdb)を追加する必要はありません。(*この手順は余分な作業であり、後でこれらの余分なdllを削除しますが、頭痛の種を減らすことができます。)
3)[ソリューションエクスプローラー]ウィンドウ>[参照]フォルダードロップダウンでwp7アプリへの参照を追加します。これを行うには、[参照]フォルダーを右クリックし、[参照の追加]をクリックして、dllファイルを参照します。このプロセスを繰り返します。(これらすべてのdllを参照することは、最終的には余分な2分の作業の1分ですが、コンパイル時にエラーが発生することはありません)
4)画像を追加するxamlページで、ヘッダーコードの上部にこれを追加します。
xmlns:it="clr-namespace:ImageTools.Controls;assembly=ImageTools.Controls"
xmlns:vm="clr-namespace:GifViewer.ViewModels"
注意:「GifViewer」をアプリケーション名に変更してください。
5)その同じページのすぐ下に、次のコードを追加します。
<phone:PhoneApplicationPage.DataContext>
<vm:MainViewModel/>
</phone:PhoneApplicationPage.DataContext>
<Grid x:Name="LayoutRoot" Background="Transparent">
<it:AnimatedImage Source="{Binding AnimationImage}" />
</Grid>
注意:グリッドである必要はありません。何もする必要はありません。スタンドアロンでもかまいません。
6)承認された回答には、アプリに「ViewModels」という名前のフォルダーがあり、その中に「MainViewModel」という名前のカスタムクラスがあります。したがって、ソリューションエクスプローラーまたはデスクトップに、ViewModelsという名前のフォルダーを追加し、MainViewModelという名前のac#クラスページを作成します。それをそのフォルダーに移動し、ソリューションエクスプローラーを更新します。ファイルが表示されない場合は、ソリューションエクスプローラーヘッダーのすぐ下にある[すべてのファイルを表示]ボタンをクリックする必要があります。
7)以下の受け入れられた回答を使用して、「MainViewModel.cs」クラスページで、他のすぐ下に以下を追加します。
using ImageTools;
using ImageTools.Controls;
using ImageTools.IO;
using ImageTools.IO.Gif;
8)受け入れられた回答はこのコードを使用しています。このコードをコピーするときは、「GifViewer」をアプリケーション名に変更し、gifのURIの場所も変更します。私の例では、「Gif」という名前のフォルダーがあり、その中に「explosion.gif」があります。ビルドアクションは、デフォルトでリソースとして保持できます。
namespace GifViewer.ViewModels {
public class MainViewModel : DependencyObject {
public MainViewModel() {
Decoders.AddDecoder<GifDecoder>();
Uri uri = new Uri("Gif/explosion.gif", UriKind.Relative);
ExtendedImage image = new ExtendedImage();
// either of these two method work.
// Just remove the first / to switch
//*
image.LoadingCompleted +=
(o, e) => Dispatcher.BeginInvoke(() => AnimationImage = image);
image.UriSource = uri;
/*/
Stream stream = Application.GetResourceStream(uri).Stream;
GifDecoder decoder = new GifDecoder();
decoder.Decode(image, stream);
AnimationImage = image;
/**/
}
public static readonly DependencyProperty AnimationImageProperty =
DependencyProperty.Register("AnimationImage",
typeof(ExtendedImage),
typeof(MainViewModel),
new PropertyMetadata(default(ExtendedImage)));
public ExtendedImage AnimationImage {
get { return (ExtendedImage)GetValue(AnimationImageProperty); }
set { SetValue(AnimationImageProperty, value); }
}
}
}
先に進んでコンパイルします。ロードできなかったことを示すランタイムエラーが発生する場合がありますが、アプリケーションを実行するとエラーが解消されます。
これでgifが再生されます。
9)不要なEXTRA dll参照の削除を開始します(2分間の追加作業の残りの1分間)。基本的に、参照したいのは次のとおりです。
ImageTools
ImageTools.Controls
ImageRools.IO.Gif
ImageTools.Controlsは必要ないかもしれませんが、ファイルサイズは25kbのようなもので、正直なところ、削除した場合にgifを表示することができませんでした。
どうぞ!
私が尋ねた元の質問
アニメーションGIFをWP7アプリで再生しようとすると、最悪の頭痛がします。imagetoolsを使用していて、stackoverflow / webで現在の「ソリューション」を表示しているにもかかわらず、ドットを接続してこれを実現することはできません。
私の問題の概要を以下に示しますが、参考までに次 のことを確認しました。Silverlight とhttp://blog.naviso.fr/wordpress/?p=733を使用してWP7アプリケーションでGIFを表示する
では、実際にこの爆破されたものを設定して、wp7アプリでアニメーションGIFを表示するにはどうすればよいでしょうか。具体的な質問-これは私のアニメーションGIFを表示するための正しいコードですか?そうでない場合、以下の修正が必要ですか?
電話での私のアニメーションGIFファイルの場所(インターネットからではありません):
Gif / explosion.gif
Xamlのメインページ:
xmlns:imagetools="clr-namespace:ImageTools.Controls;assembly=ImageTools.Controls"
....
<phone:PhoneApplicationPage.Resources>
<imagetools:ImageConverter x:Key="ImageConverter" />
</phone:PhoneApplicationPage.Resources>
....
<imagetools:AnimatedImage x:Name="animationgif" Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}" />
xamlページの背後にあるコード:
public partial class MainPage : PhoneApplicationPage
{
using ImageTools;
using ImageTools.Controls;
using ImageTools.IO.Gif;
public MainPage()
{
InitializeComponent();
ImageTools.IO.Decoders.AddDecoder<ImageTools.IO.Gif.GifDecoder>();
}
public void eventtofiretoshowexplosion_gif(object sender, MouseButtonEventArgs e)
{
// A main problem -- this code doesn't work by itself, as what is the ImageSource!?
// It cannot be used as a variable it says.
// animationgif.ImageSource does not work at all (not a method).
ImageSource = new Uri("http://mysite/my.gif", UriKind.Absolute);
}
}
これは過去数時間私を悩ませてきました、そして私は本当にこれでいくらかの助けを使うことができました。これに対する簡単な修正がある場合は、私をページに案内するのではなく、助けて、それがどのように行われるかを示してください。私はこれについてFARのページが多すぎるのを見てきました。それぞれが機能すると主張していますが、私のアプリでは機能しません。