2013-11-19 4 views
2

Я хочу передать изображение между страницами. На одной из страниц загружается изображение, поэтому у меня есть источник. Однако, я не знаю, как передать это изображение (источник) на другую страницу?Пропустить изображение между страницами

Я пробовал конвертировать в строку, но я думаю, что это нехороший способ пойти.

EDIT:

Метод 1: Первая страница

WriteableBitmap wb = new WriteableBitmap(logoQrCodeImage, null); 
      if (!IsolatedStorageSettings.ApplicationSettings.Contains("State")) 
      { 
       IsolatedStorageSettings.ApplicationSettings["State"] = wb; 
       IsolatedStorageSettings.ApplicationSettings.Save(); 
      } 

Вторая страница:

   if (IsolatedStorageSettings.ApplicationSettings.Contains("State")) 
      { 
       WriteableBitmap wb = IsolatedStorageSettings.ApplicationSettings["State"] as WriteableBitmap; 
       icon.Source = wb; 
       IsolatedStorageSettings.ApplicationSettings.Remove("State"); 
       IsolatedStorageSettings.ApplicationSettings.Save(); 
      } 

И ошибка в строке:

IsolatedStorageSettings.ApplicationSettings.Save(); 

Сообщение об ошибке:

'System.Runtime.Serialization.InvalidDataContractException' occurred in System.Runtime.Serialization.ni.dll but was not handled in user code

Способ 2: Первая страница:

PhoneApplicationService.Current.State["iconLogo"] = logoQrCodeImage.Source; 

Вторая страница:

  Uri url = new Uri(iconImage, UriKind.Relative); 
      BitmapImage bmp = new BitmapImage(url); 
      icon.Source = bmp; 
+0

изображение является статическим или из сети? – techloverr

+0

Static - из телефонной библиотеки – user2962457

+0

, тогда вы можете пройти путь тоже – techloverr

ответ

0

Храните изображение как переменную в IsolatedStorageSettings и вынимайте его на второй странице.

Что-то вроде этого будет работать.

включают способ, как этот

public static byte[] ConvertToBytes(WriteableBitmap bitmapImage) 
     { 
      using (MemoryStream ms = new MemoryStream()) 
      { 
       Extensions.SaveJpeg(bitmapImage, ms, 
        bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100); 

       return ms.ToArray(); 
      } 
     } 

saving-

если изображение i1 ваш логотип Затем изображение.

WritableBitmap wb=new WritableBitmap (i1,null); 
Byte [] array=ConvertToBytes(wb) 
     if(!IsolatedStorageSettings.ApplicationSettings.Contains("State")) 
     { 
     IsolatedStorageSettings.ApplicationSettings["State"] = array; 
         IsolatedStorageSettings.ApplicationSettings.Save(); 
     } 

Retrieval-

if(IsolatedStorageSettings.ApplicationSettings.Contains("State")) 
      { 
      Byte [] array= IsolatedStorageSettings.ApplicationSettings["State"] as Byte[]; 
MemoryStream stream = new MemoryStream(array); 
       WriteableBitmap wb= new WriteableBitmap(200, 200); 
       wb.LoadJpeg(stream); 
    //now assign wb as a source to any image control. 
     IsolatedStorageSettings.ApplicationSettings.Remove("State"); 
          IsolatedStorageSettings.ApplicationSettings.Save(); 
      } 
+0

Эй, Пробовал, но это не работает. – user2962457

+0

В моей картине под названием «ImageCodeImage» заменено слово «Image Object», но проблема заключается в строке IsolStorageSettings.ApplicationSettings.Save(); \ n Сообщение об ошибке: «System.Runtime.Serialization.InvalidDataContractException» произошел в System.Runtime.Serialization.ni.dll, но не был обработан в коде пользователя. – user2962457

+0

. Как разместить объект WritableBitmap моего изображения вместо объекта Image и выполнить объект как объект WritableBitmap? – user2962457

2

Попробуйте это:

Первая страница:

PhoneApplicationService.Current.State["iconLogo"] = logoCodeImage.Source; 

Вторая страница:

var iconImage = PhoneApplicationService.Current.State["iconLogo"].ToString();  
Uri url = new Uri(iconImage , UriKind.Absolute); 
BitmapImage bmp = new BitmapImage(url); 
icon.Source = bmp; 

И вы получите изображение.

+0

У меня есть ошибка: в строке Uri url = new Uri (iconImage, UriKind.Absolute); System.UriFormatException не был обработан кодом пользователя Сообщение = Неверный URI: формат URI не может быть определен. – user2962457

+0

устанавливают urikind как «UriKind.Relative». Жаль, что была моя ошибка. –

+0

Теперь нет ошибки, но изображение не передается. (Еще нет источника). – user2962457

Смежные вопросы