private static BitmapSource CreateImageFromUIElement(UIElement element, double dpiX, double dpiY)
{
#if SILVERLIGHT
var bitmap = new WriteableBitmap((int)element.RenderSize.Width, (int)element.RenderSize.Height);
Array.Clear(bitmap.Pixels, 0, bitmap.Pixels.Length);
bitmap.Render(element, element.RenderTransform);
bitmap.Invalidate();
#else
var bitmap = new RenderTargetBitmap((int)(element.RenderSize.Width * dpiX / 96),
(int)(element.RenderSize.Height * dpiY / 96), dpiX, dpiY, PixelFormats.Pbgra32);
bitmap.Render(element);
#endif
return bitmap;
}