2011-09-13 15 views
1
private void SaveAsPicture_Click(object sender, RoutedEventArgs e) 
{ 
    WriteableBitmap bmp = new WriteableBitmap(MyUIElement, null); 
    var library = new MediaLibrary(); 
    MemoryStream stream = new MemoryStream(); 
    bmp.SaveJpeg(stream, 100, 100, 0, 90); 
    library.SavePicture("Certificate", stream); 
} 

渲染用户控件到图像这应该在MyUIElement的渲染保存为BMP那么保存为JPEG在medialibrary但我发现了一个value does not fall within expected range错误就行与library.SavePicture("Certificate", stream);在MediaLibrary

任何想法?

+0

见http://stackoverflow.com/questions/6299978/uielement-to-image-file-wp7/6300024#6300024 –

+0

但它会再显示手机上的照片库? –

+0

问题/答案显示如何保存到IsolatedStorage,我认为可能是相关的。代码中的哪一行导致错误? –

回答

0

我得到了和你一样的错误。我按照How to: Encode a JPEG for Windows Phone and Save to the Pictures Library on MSDN的例子解决了这个问题。

那么你的方法应该如下

private void SaveAsPicture_Click(object sender, RoutedEventArgs e) 
{ 
    WriteableBitmap bmp = new WriteableBitmap(MyUIElement, null); 
    library.SavePicture("Certificate", stream); 
    String tempJPEG = "TempJPEG"; 

    // Create a virtual store and file stream. Check for duplicate tempJPEG files. 
    var myStore = IsolatedStorageFile.GetUserStoreForApplication(); 
    if (myStore.FileExists(tempJPEG)) 
    { 
     myStore.DeleteFile(tempJPEG); 
    } 

    IsolatedStorageFileStream myFileStream = myStore.CreateFile(tempJPEG); 

    bmp.SaveJpeg(myFileStream, wb.PixelWidth, wb.PixelHeight, 0, 85); 
    myFileStream.Close(); 

    // Create a new stream from isolated storage, and save the JPEG file to the media library on Windows Phone. 
    myFileStream = myStore.OpenFile(tempJPEG, FileMode.Open, FileAccess.Read); 

    // Save the image to the camera roll or saved pictures album. 
    MediaLibrary library = new MediaLibrary(); 

     // Save the image to the camera roll album. 
    library.SavePicture("Certificate", myFileStream); 
} 
相关问题