4

画像をダウンロードしようとしていますが、終了時にイベントが発生します。私はこれを使用します:

BitmapImage btest = new BitmapImage(new Uri("http://www.google.com/images/srpr/logo4w.png"));
btest.ImageOpened += btest_ImageOpened;

void btest_ImageOpened(object sender, RoutedEventArgs e)
{
    throw new NotImplementedException();
}

ただし、ImageOpenedイベントは発生しません。Image ControlのソースをBitmapImageusingに設定した場合:

image.Source = btest;

発砲します。送信者が画像のソースとして設定されていImageOpenedない限り、イベントが発生しないのはなぜですか?BitmapImage

4

4 に答える 4

5

私はこれを自分で理解しました。デフォルトでは、BitmapImageは必要になるまで初期化されません。BitmapImageのデフォルト値CreateOptionsはですBitmapCreateOptions.DelayCreation。これを修正するために必要なのは、に設定CreateOptionsすることだけBitmapCreateOptions.Noneです。

私の作業コードは次のとおりです。

BitmapImage btest = new BitmapImage(new Uri("http://www.google.com/images/srpr/logo4w.png"));
btest.CreateOptions = BitmapCreateOptions.None;
btest.ImageOpened += btest_ImageOpened;

void btest_ImageOpened(object sender, RoutedEventArgs e)
{
    throw new NotImplementedException();
}
于 2013-03-25T22:16:02.520 に答える
1

(これは、OPが適切なソリューションに到達するのに役立ったため、私たちの議論に基づいて投稿します)

私は推測しています-それは決して使用されていません-したがって、ロードまたはオープンすることはありません-ただの考えですが、私は考えるのは理にかなっています

于 2013-03-25T22:27:25.653 に答える
1

私の2セント、多分それは他の誰かを助けるでしょう...ページに画像コントロールを配置し、xamlのイベントとソースを配線すると、正常に機能し、イベントが発生します。ただし、コードでビットマップイメージをロードし、イメージコントロールのソースを設定すると、イメージは正常にロードされますが、イメージコントロールのイベントは発生しません。上記のすべてのビットマップオプションを試しましたが、どれも機能していないようです。最終的に、ビットマップイメージのImageOpenedイベントを処理し、イベントを発生させたイメージコントロールでは処理しませんでした。ただし、この段階では画像コントロールが画像を完全にロードしていないため、画像コントロールではなく、ビットマップ画像を参照して詳細を確認する必要があることに注意してください。

于 2016-02-03T09:34:58.123 に答える
0

Windows Phone 8.0 Silverlightアプリケーションでは、作成オプションをに設定すると、イベントImageOpenedが表示されます BitmapCreateOptions.BackgroundCreation

に設定してもわかりません

BitmapCreateOptions.DelayCreation(これがデフォルトです)

またBitmapCreateOptions.None

于 2014-08-29T16:07:45.387 に答える