J'ai utilisé l'événement BitmapImage.DownloadProgress pour attendre que l'image soit chargée lors de la création d'un bitmap à partir d'un URI. C'est-à-dire que je peux utiliser un gestionnaire d'événements pour vérifier Image.ActualWidth/ActualHeight une fois le téléchargement terminé. Cela fonctionne bien.Silverlight: Obtenir une image (à partir d'OpenFileDialog) largeur/hauteur
Mais lorsque je charge une image que l'utilisateur a sélectionnée sur son ordinateur, DownloadProgress est inutile.
Cela fonctionne pour les bitmaps URI:
private void LoadImage(Uri uri)
{
this.ResetProgressImage();
BitmapImage image = new BitmapImage();
image.DownloadProgress += new EventHandler<DownloadProgressEventArgs>(LoadImageDownloadProgress);
image.UriSource = uri;
this.ImageFull.Source = image;
}
private void LoadImageDownloadProgress(object sender, DownloadProgressEventArgs e)
{
this.Dispatcher.BeginInvoke(delegate
{
this.ProgressImage.Value = e.Progress;
if (e.Progress == 100)
{
ImageHelper.Current.Width = Math.Round(this.ImageFull.ActualWidth);
ImageHelper.Current.Height = Math.Round(this.ImageFull.ActualHeight);
}
});
}
Mais cela ne fonctionne pas lors de l'obtention d'un BitmapImage d'un flux:
private void LoadImage(Stream stream)
{
this.ResetProgressImage();
BitmapImage image = new BitmapImage();
image.DownloadProgress += new EventHandler<DownloadProgressEventArgs>(LoadImageDownloadProgress);
image.SetSource(stream);
this.ImageFull.Source = image;
}
Est-ce que quelqu'un sait une alternative à downloadProgress, lors de l'utilisation SetSource (courant)?
Veuillez voter la bonne réponse. – BenMaddox