RenderTargetBitmap is a new feature in Windows 8.1 which allows XAML trees to be rendered to Bitmap:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.rendertargetbitmap.aspx
I've previously written 2 articles about using Direct2D to render 2D drawings in Windows 8 apps and export them to file, which prior to 8.1 was the only way of doing this.
http://geoffwebbercross.blogspot.co.uk/2012/09/exporting-image-from-directx-2d-image.html
http://geoffwebbercross.blogspot.co.uk/2012/09/exporting-image-from-directx-2d-image_15.html
This is how to render the tree using RenderTargetBitmap:
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(myElementTree);
myImage.Source = renderTargetBitmap;
And then output to file:
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.Render(myElementTree);
var pixels = await renderTargetBitmap.GetPixelsAsync();
var picker = new FileSavePicker();
// Picker setup
var file = await picker.PickSaveFileAsync();
// File validation
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)
{
var encoder = await
BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Rgba8, 100, 0, 96, 96,
await renderTargetBitmap.GetPixelsAsync());
await encoder.FlushAsync();
}
[Samples from here]
This opens up a lot of imaging opportunities for developers wanting to do imaging in apps who don't want to get into Direct2D.
Direct2D however, still has benefits like built-in effects, opacity mask capability (8.1 still doesn't seem to have this but I may be wrong).
No comments:
Post a Comment