How to set and save background image in windows phone?

耗尽温柔 提交于 2019-12-23 05:32:31

问题


I'm using this code, so user can sets custom background image for the application:

private void Button_Click(object sender, RoutedEventArgs e)
    {
        PhotoChooserTask photoChooserTask = new PhotoChooserTask();
        photoChooserTask.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
        photoChooserTask.Show();
    }

    void photoChooserTask_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
            bmp.SetSource(e.ChosenPhoto);

            var imageBrush = new ImageBrush
            {
                ImageSource = bmp,
                Opacity = 0.5d
            };
            App.RootFrame.Background = imageBrush;
        }
    }

but this won't save background image for next application lunch. now how can I save chosen photo to isolated storage to remains as app background even after restarting the application?


回答1:


Save image asynchronously, applies to WP8 only.

public static async Task SaveImageAsync(string imageFileName, BitmapImage image)
{
    // Get Students LocalFolder
    IStorageFolder folder = await ApplicationData.Current.LocalFolder
        .CreateFolderAsync("Images", CreationCollisionOption.OpenIfExists);


        IStorageFile file = await folder.CreateFileAsync(
            imageFileName, CreationCollisionOption.ReplaceExisting);

        using (Stream stream = await file.OpenStreamForWriteAsync())
        {                
            var wrBitmap = new WriteableBitmap(image);
            wrBitmap.SaveJpeg(stream, image.PixelWidth, image.PixelHeight, 100, 100);
        }
    }

Read image synchronously both WP7.x WP8:

public static BitmapImage LoadImage(string imageFileName)
{
    BitmapImage bitmapImage = null;

    using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
    {
         using (var isoStream = isoFile.OpenFile(
             imageFileName, FileMode.Open, FileAccess.Read))
         {
              bitmapImage = new BitmapImage();
              bitmapImage.SetSource(isoStream);
         }
    }

    return bitmapImage;
}

You can find a bunch of resources online, just google it. http://msdn.microsoft.com/en-us/library/xf96a1wz(v=vs.110).aspx




回答2:


When Choosing

IsolatedStorageSettings.ApplicationSettings["backgroundImage"]=e.OriginalFileName;

On app loading

image.Source = new BitmapImage(new Uri(IsolatedStorageSettings.ApplicationSettings["backgroundImage"], UriKind.Absolute));



回答3:


You can use the free EZ_Iso.dll to do this.

Just send your Bitmap off to the serializer with a name and let it handle the rest

//Saving
EZ_Iso.IsolatedStorageAccess.SaveImage(“MyImage”, YourImage);

//Retrieving 
ImageControl.Source = EZ_Iso.IsolatedStroageAccess.GetImage(“MyImage”,Width,Height); 

EZ_Iso.dll Download and Documentation



来源:https://stackoverflow.com/questions/23013737/how-to-set-and-save-background-image-in-windows-phone

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!