Выбор изображения из медиатеки Windows Phone и установка в качестве фона страницы

Я пытаюсь получить изображение из телефонной библиотеки и установить его в качестве фона страницы, используя следующий код.

    private void selectImageFromMediaLib()
    {
         selectphoto = new PhotoChooserTask();
         selectphoto.Completed += new EventHandler<PhotoResult>(selectphoto_Completed);
     selectphoto.Show();
    }

    private void selectphoto_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            backgroundUri = new Uri(e.OriginalFileName, UriKind.Absolute);
            var bitmap = new BitmapImage(backgroundUri);
            ImageBrush imageBrush = new ImageBrush();
            imageBrush.ImageSource = bitmap;
            this.LayoutRoot.Background = imageBrush;     
     }
    }

Однако фон страницы становится черным, поэтому фотография не была получена/создана правильно. Каков правильный путь для URI к библиотеке устройств? Разве недостаточно использовать UriKind.Absolute?

введите здесь описание изображения


person PutraKg    schedule 07.04.2013    source источник


Ответы (2)


Вы не можете использовать PhotoResult.OriginalFileName для чтения файла, вместо этого используйте свойство PhotoResult.ChosenPhoto и назначьте его свойству bitmap.ImageSource в коде.

person Pedro Lamas    schedule 07.04.2013

попробуй это. Меня устраивает

PhotoChooserTask selectphoto;
private void selectImageFromMediaLib()
{
   selectphoto = new PhotoChooserTask();
   selectphoto.Completed += new EventHandler<PhotoResult>(selectphoto_Completed);
   selectphoto.Show();
}

private void selectphoto_Completed(object sender, PhotoResult e)
{
   if (e.TaskResult == TaskResult.OK)
   {
       var imageBytes = new byte[e.ChosenPhoto.Length];
       e.ChosenPhoto.Read(imageBytes, 0, imageBytes.Length);
       BitmapImage bitmapImage = new BitmapImage();
       MemoryStream ms = new MemoryStream(imageBytes);
       bitmapImage.SetSource(ms);
       ImageBrush imageBrush = new ImageBrush();
       imageBrush.ImageSource = bitmapImage;
       this.LayoutRoot.Background = imageBrush;
    }
}
person reza.cse08    schedule 24.04.2016