Caveats
Note the following:
- The code requires an XNA library to save the picture to the media library. To have this, follow the steps:
- In your application (or class library), add a reference to Microsoft.Xna.Framework.
- In your code, add a “using” statement to Microsoft.Xna.Framework.Media.
- In the Properties folder, open WMAppManifest.xml and add the following capability: ID_CAP_MEDIALIB.
- The method call will fail with an exception if the device is connected to the Zune application on the PC. To avoid this, either disconnect the device when testing, or end the Zune application on the PC.
- While the method call will not fail on the emulator, there is no way to access the media library, so it is pretty much useless on this platform.
- This method only prints Silverlight elements to the output image. Other elements (such as a WebBrowser control’s content for instance) will output a black rectangle.
The code
public static void SaveToMediaLibrary(FrameworkElement element, string title)
{
try
{
var bmp = new WriteableBitmap(element, null);
var ms = new MemoryStream();
bmp.SaveJpeg(
ms,
(int)element.ActualWidth,
(int)element.ActualHeight,
0,
100);
ms.Seek(0, SeekOrigin.Begin);
var lib = new MediaLibrary();
var filePath = string.Format(title + ".jpg");
lib.SavePicture(filePath, ms);
Read more: Laurent Bugnion (GalaSoft)