在Windows Phone 7中的图片库中显示图像

时间:2011-11-30 08:25:55

标签: image windows-phone-7 binding picturegallery

我在wp7中有一个图像应用程序。

class Images
{
   public string Title {get;set;}
   public string Path {get;set;}
}

在页面级别上,我将标题和路径(相对于我的应用程序)绑定到列表中。

我需要的是,当用户点击列表项时,在Windows Phone 7的图片库中打开相应的图像。

1 个答案:

答案 0 :(得分:0)

您应该澄清您的问题,但我认为Path是您的图像在隔离存储中的位置。提供Image是xaml中图像的名称

img.Source = GetImage(LoadIfExists(image.Path));

LoadIfExists返回隔离存储中文件的二进制数据,GetImage将其作为WriteableBitmap返回:

    public static WriteableBitmap GetImage(byte[] buffer)
    {
        int width = buffer[0] * 256 + buffer[1];
        int height = buffer[2] * 256 + buffer[3];

        long matrixSize = width * height;

        WriteableBitmap retVal = new WriteableBitmap(width, height);

        int bufferPos = 4;

        for (int matrixPos = 0; matrixPos < matrixSize; matrixPos++)
        {
            int pixel = buffer[bufferPos++];
            pixel = pixel << 8 | buffer[bufferPos++];
            pixel = pixel << 8 | buffer[bufferPos++];
            pixel = pixel << 8 | buffer[bufferPos++];
            retVal.Pixels[matrixPos] = pixel;
        }

        return retVal;
    }

    public static byte[] LoadIfExists(string fileName)
    {
        byte[] retVal;

        using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (iso.FileExists(fileName))
            {
                using (IsolatedStorageFileStream stream = iso.OpenFile(fileName, FileMode.Open))
                {
                    retVal = new byte[stream.Length];
                    stream.Read(retVal, 0, retVal.Length);
                }
            }
            else
            {
                retVal = new byte[0];
            }
        }
        return retVal;
    }

如果你想将图像写入图片库,它基本上是相同的过程,最后调用SavePictureToCameraRoll()的{​​{1}},如MSDN Article

所述