如何将变量包含图像保存到windows phone中的独立存储中

时间:2012-11-20 15:47:05

标签: windows-phone-7 windows-phone

我一直在做一篇关于windowsphone的文章。我创建了一个地址变量,包括一个uri,用于将图像添加到地址中。使用隔离存储来保存数据时出错。我不知道为什么。 请帮我! 非常感谢你。

class Address
{
   private string name;
   private Uri icon;
   .....
}

...

public void save()
    {
        XmlWriterSettings xmlwritersetting = new XmlWriterSettings();
        xmlwritersetting.Indent = true;
            using (IsolatedStorageFile myisolatedstiragefile = IsolatedStorageFile.GetUserStoreForApplication())
        {

            if (myisolatedstiragefile.FileExists(filename))
            {
                myisolatedstiragefile.DeleteFile(filename);
            }

            using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(filename, System.IO.FileMode.OpenOrCreate, myisolatedstiragefile))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(List<Adress>));
                using (XmlWriter writer = XmlWriter.Create(stream, xmlwritersetting))
                {
                    serializer.Serialize(writer, listadress);
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

我理解你的问题有点困难,但我会尝试。你真的应该指出你在调试器中特别得到的错误以及它发生的位置。

但只是通过观察,似乎您可能正在尝试使用XmlSerializer将二进制图像数据写入iso-storage,这可能不会起作用。您可以找到许多使用iso-storage用于各种目的的示例,包括在此处编写图像文件: http://www.windowsphonegeek.com/tips/All-about-WP7-Isolated-Storage---Read-and-Save-Images

例如,它表明您可以通过执行以下操作将JPG图像保存到隔离存储:

    // Create a filename for JPEG file in isolated storage.
            String tempJPEG = "logo.jpg";             
    // Create virtual store and file stream. Check for duplicate tempJPEG files. 
           using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())            {
                if (myIsolatedStorage.FileExists(tempJPEG))                {
                    myIsolatedStorage.DeleteFile(tempJPEG);
            }  
               IsolatedStorageFileStream fileStream = myIsolatedStorage.CreateFile(tempJPEG); 
                StreamResourceInfo sri = null;
                Uri uri = new Uri(tempJPEG, UriKind.Relative);
                sri = Application.GetResourceStream(uri);
                 BitmapImage bitmap = new BitmapImage();
                bitmap.SetSource(sri.Stream);
                WriteableBitmap wb = new WriteableBitmap(bitmap);
                 // Encode WriteableBitmap object to a JPEG stream.
                Extensions.SaveJpeg(wb, fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
                 //wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);                fileStream.Close();
            }