Пример #1
0
        private async Task ShareEmotion(EmotionData Data)
        {
            Chart chart = new PieChart();

            chart            = MonthChart as PieChart;
            chart.IsAnimated = false;
            chart.Entries.ToList().ForEach(x => x.TextColor = SKColors.Purple);
            var bmp    = new SKBitmap(500, 500);
            var canvas = new SKCanvas(bmp);
            var image  = SKImage.FromPixels(bmp.PeekPixels());

            chart.DrawContent(canvas, 500, 500);
            canvas.Save();


            using (MemoryStream ms = new MemoryStream())
            {
                image.Encode(SKEncodedImageFormat.Png, 4).AsStream().CopyTo(ms);

                var str = Convert.ToBase64String(ms.ToArray());
                bytes = Convert.FromBase64String(str);
            }
            try
            {
                PermissionStatus status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);

                if (status != PermissionStatus.Granted)
                {
                    var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Storage });

                    status = results[Permission.Storage];
                }

                if (status != PermissionStatus.Granted)
                {
                    return;
                }
                else
                {
                    DependencyService.Get <IShare>()
                    .ShareContent("", "AboutSelf", ImageSource.FromStream(() => new MemoryStream(bytes)));
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }