For those who needs to save Chart as an Image in an Universal App, the snippet below works, for example on a button click :private async void SaveImage(){//Rendu du composant Xaml, ici le graphique 'Syncfusion.Chart', sous forme d'image en mémoire.RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();await renderTargetBitmap.RenderAsync(doughnutMadelin, (int)myDoughnutActualWidth, (int)myDoughnut.ActualHeight);var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();//var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;var localFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;var saveFile = await localFolder.CreateFileAsync("Chart.png", Windows.Storage.CreationCollisionOption.OpenIfExists);// Encodage de l'image en mémoire dans le fichier désigné sur le disqueusing (var fileStream = await saveFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite)){var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);encoder.SetPixelData(BitmapPixelFormat.Bgra8,BitmapAlphaMode.Ignore,(uint)renderTargetBitmap.PixelWidth,(uint)renderTargetBitmap.PixelHeight,DisplayInformation.GetForCurrentView().LogicalDpi,DisplayInformation.GetForCurrentView().LogicalDpi,pixelBuffer.ToArray());await encoder.FlushAsync();}}
Hi Tod,
Thanks for using Syncfusion products.
We can achieve your requirement in loaded event by using Dispatcher as per the following code example.
Code Snippet[ C#]:
async void Performance_Loaded(object sender, RoutedEventArgs e)
{
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
{
SaveImage();
}));
}
We have prepared a sample based on this and you can find the sample under the following location:
Sample : http://www.syncfusion.com/downloads/support/forum/120283/ze/Export_SfChart699489350
Please let us know if you have any queries.
Regards,
Muneesh Kumar G.
[C#] async void Performance_Loaded(object sender, RoutedEventArgs e) { await Task.Delay(TimeSpan.FromSeconds(5)); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Low, new DispatchedHandler(() => { SaveImage(); })); this.Loaded -= Performance_Loaded; } |