private void StartInking(NowPlayingState nowPlaying, byte[] imageBytes) { if (nowPlaying.HasItem && imageBytes != null) { BuildCast.DataModel.InkNote meme = new BuildCast.DataModel.InkNote(nowPlaying.CurrentEpisode.Key, PlayerService.Current.CurrentTime); InkNoteData = new InkNoteData(); InkNoteData.ImageBytes = imageBytes; ViewModel.GoToInkNote(meme); } }
private async Task LoadExisting(BuildCast.DataModel.InkNote meme) { using (var db = new LocalStorageContext()) { _data = db.MemeData.Where(l => l.InkMeme == meme.Id).FirstOrDefault(); if (_data != null) { var image = await _data.GetImage(Image_ImageOpened); framergrab.Source = image; await LoadInk(_data.Ink); } } }
private async Task <bool> Save_InkedImagetoStream(IRandomAccessStream stream) { bool hasXamlOverlay = xamloverlay.Children.Count > 0; if (_data == null) { _data = Player.InkNoteData; } if (_data == null) { return(false); } using (var imageStream = await _data.GetImageStream()) { CanvasDevice device = CanvasDevice.GetSharedDevice(); var image = await CanvasBitmap.LoadAsync(device, imageStream); using (var renderTarget = new CanvasRenderTarget(device, (int)inkingCanvas.ActualWidth, (int)inkingCanvas.ActualHeight, 96)) { using (CanvasDrawingSession ds = renderTarget.CreateDrawingSession()) { ds.Clear(Colors.White); ds.DrawImage(image, new Rect(0, 0, (int)inkingCanvas.ActualWidth, (int)inkingCanvas.ActualHeight)); if (hasXamlOverlay) { await DrawXamlOverlay(device, renderTarget, ds); } ds.Units = CanvasUnits.Pixels; ds.DrawInk(inkingCanvas.InkPresenter.StrokeContainer.GetStrokes()); } await renderTarget.SaveAsync(stream, CanvasBitmapFileFormat.Png); } } return(true); }