public override object generatePeerImage()
{
int width = getWidth();
int height = getHeight();
if (width <= 0 || height <= 0)
{
width = getPreferredW();
height = getPreferredH();
}
CodenameOneImage img = new CodenameOneImage();
img.@this();
img.name = "PeerImage: " + element.ToString();
IRandomAccessStream stream = new InMemoryRandomAccessStream();
CanvasBitmap cb = null;
SilverlightImplementation.dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
if (element is WebView)
{
await ((WebView)element).CapturePreviewToStreamAsync(stream);
await stream.FlushAsync();
stream.Seek(0);
cb = await CanvasBitmap.LoadAsync(SilverlightImplementation.screen, stream);
}
else
{
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(element);
byte[] buf = renderTargetBitmap.GetPixelsAsync().AsTask().ConfigureAwait(false).GetAwaiter().GetResult().ToArray();
cb = CanvasBitmap.CreateFromBytes(SilverlightImplementation.screen, buf, width, height,
SilverlightImplementation.pixelFormat, SilverlightImplementation.screen.Dpi);
}
img.image = new CanvasRenderTarget(SilverlightImplementation.screen, cb.SizeInPixels.Width, cb.SizeInPixels.Height, cb.Dpi);
img.graphics.destination.drawImage(cb, 0, 0);
img.graphics.destination.dispose();
}).AsTask().GetAwaiter().GetResult();
return ui.Image.createImage(img);
}