Silverlight: получение изображения (из OpenFileDialog) ширина / высота - PullRequest
2 голосов
/ 05 февраля 2009

Я использовал событие BitmapImage.DownloadProgress, чтобы дождаться загрузки изображения при создании растрового изображения из URI. Для этого я могу использовать обработчик событий для проверки Image.ActualWidth / ActualHeight после завершения загрузки. Это отлично работает.

Но когда я загружаю изображение, выбранное пользователем на своем компьютере, DownloadProgress бесполезен.

Это работает для растровых изображений 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);
        }
    });
}

Но это не работает при получении BitmapImage из потока:

private void LoadImage(Stream stream)
{
    this.ResetProgressImage();
    BitmapImage image = new BitmapImage();            
    image.DownloadProgress += new EventHandler<DownloadProgressEventArgs>(LoadImageDownloadProgress);            
    image.SetSource(stream);
    this.ImageFull.Source = image;
}

Кто-нибудь знает альтернативу DownloadProgress при использовании SetSource (stream)?

1 Ответ

2 голосов
/ 05 февраля 2009

В BitmapImage нет события для отслеживания процесса загрузки с использованием потока.

Однако, если вам просто нужны размеры изображения, вы можете добавить изображение в иерархию и дождаться события «Loaded» или «LayoutUpdated».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...