public async Task ShowAsync(PhotoData photo) { if (photo == null || photo.Uri == null) { return; } Root.Opacity = 0; Root.Visibility = Visibility.Visible; LoadingScreen.Opacity = 1; LoadingScreen.IsHitTestVisible = true; ProgressRing.IsActive = true; await Root.Scale(1.2f, 1.2f, (float)ActualWidth / 2, (float)ActualHeight / 2, 0).Then() .Fade(1).Scale(1, 1, (float)ActualWidth / 2, (float)ActualHeight / 2).StartAsync(); _photo = photo; var uri = new Uri(photo.Uri); if (uri.IsFile) { _file = await StorageFile.GetFileFromPathAsync(photo.Uri); } else { _file = await StorageFile.CreateStreamedFileFromUriAsync("photo.jpg", uri, null); } if (_file == null) { Hide(); return; } var stream = await _file.OpenReadAsync(); _canvasImage = await CanvasBitmap.LoadAsync(ImageCanvas, stream); var imgBounds = _canvasImage.GetBounds(ImageCanvas); //var size = Math.Min(imgBounds.Height, imgBounds.Width); ImageCanvas.Height = 1200; ImageCanvas.Width = 950; _selectedEffectType = EffectType.none; ImageCanvas.Invalidate(); if (_photo.InkUri != null) { Inker.LoadInkFromFile(_photo.InkUri); } if (App.IsXbox()) { DetailsButton.Focus(FocusState.Keyboard); } SetCanvasSize(); SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; ((App)(App.Current)).BackRequested += PhotoPreviewView_BackRequested; SizeChanged += PhotoPreviewView_SizeChanged; ImageRoot.SizeChanged += ImageRoot_SizeChanged; SetCanvasSize(); LoadingScreen.Fade(0, 300).Start(); ProgressRing.IsActive = false; LoadingScreen.IsHitTestVisible = false; FinishedShowing?.Invoke(this, null); IsVisible = true; AnalyzeFaces(); }