示例#1
0
        private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
        {
            var b = VisualStateManager.GoToState(CurrentImagePage, "Low", true);

            Debug.WriteLine("NavigationHelper_LoadState");

            // Reset the scroll and zoom of the image
            ImageScrollViewer.ChangeView(null, null, 1.0f, true);//.ZoomToFactor(1);
            //var r = ImageScrollViewer.ChangeView(0, 0, 1, false);

            try
            {
                var x = DisplayInformation.GetForCurrentView();
                if (e.NavigationParameter != null)
                {
                    this.ImageViewModel.Post = Post.FromXml(e.NavigationParameter as string);
                    await ImageViewModel.UpdateIsFavorited();

                    this.ImageViewModel.Comments = await Comments.GetComments(this.ImageViewModel.Post.Id);
                }
            }
            catch (Exception ex)
            {
            }


            if (ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
            {
                var statusBar = StatusBar.GetForCurrentView();
                if (statusBar != null)
                {
                    await statusBar.HideAsync();
                }
            }
        }
示例#2
0
        public async Task OpenFileAsync(StorageFile file)
        {
            CanvasBitmap fileBitmap = null;
            var          extension  = file.FileType;

            switch (extension)
            {
            case ".bin":
                var buffer = await FileIO.ReadBufferAsync(file);

                var width  = 0;
                var height = 0;
                var format = DirectXPixelFormat.B8G8R8A8UIntNormalized;

                // If the image name ends in (width)x(height), then use that in the dialog
                var fileName = file.Name;
                var fileStem = fileName.Substring(0, fileName.LastIndexOf('.'));
                var pattern  = @".*[A-z](?<width>[0-9]+)x(?<height>[0-9]+)";
                var match    = Regex.Match(fileStem, pattern);
                if (match.Success)
                {
                    ResetBinaryDetailsInputDialog(int.Parse(match.Groups["width"].Value), int.Parse(match.Groups["height"].Value));
                }
                else
                {
                    ResetBinaryDetailsInputDialog();
                }

                var dialogResult = await BinaryDetailsInputDialog.ShowAsync();

                if (dialogResult == ContentDialogResult.Primary &&
                    ParseBinaryDetailsSizeBoxes(out width, out height))
                {
                    fileBitmap = CanvasBitmap.CreateFromBytes(_canvasDevice, buffer, width, height, format);
                }
                break;

            default:
                // open it with win2d
                using (var stream = await file.OpenReadAsync())
                {
                    fileBitmap = await CanvasBitmap.LoadAsync(_canvasDevice, stream);
                }
                break;
            }

            if (fileBitmap != null)
            {
                var size = fileBitmap.SizeInPixels;
                var backgroundSurface = _compositionGraphics.CreateDrawingSurface2(
                    new SizeInt32()
                {
                    Width = (int)size.Width, Height = (int)size.Height
                },
                    DirectXPixelFormat.B8G8R8A8UIntNormalized,
                    DirectXAlphaMode.Premultiplied);
                using (var drawingSession = CanvasComposition.CreateDrawingSession(backgroundSurface))
                {
                    drawingSession.FillRectangle(0, 0, size.Width, size.Height, _backgroundCavnasBrush);
                }

                var imageSurface = _compositionGraphics.CreateDrawingSurface2(
                    new SizeInt32()
                {
                    Width = (int)size.Width, Height = (int)size.Height
                },
                    DirectXPixelFormat.B8G8R8A8UIntNormalized,
                    DirectXAlphaMode.Premultiplied);
                using (var drawingSession = CanvasComposition.CreateDrawingSession(imageSurface))
                {
                    drawingSession.Clear(Colors.Transparent);
                    drawingSession.DrawImage(fileBitmap);
                }

                _backgroundBrush.Surface = backgroundSurface;
                _imageBrush.Surface      = imageSurface;
                ImageGrid.Width          = size.Width;
                ImageGrid.Height         = size.Height;
                ImageScrollViewer.ChangeView(0, 0, 1, true);
                if (_borderEnabled)
                {
                    ImageBorderBrush.Color = Colors.Black;
                }
                _currentFile   = file;
                _currentBitmap = fileBitmap;
            }
        }
        public async Task OpenFileAsync(StorageFile file)
        {
            CanvasBitmap fileBitmap = null;
            var          extension  = file.FileType;

            switch (extension)
            {
            case ".bin":
                var buffer = await FileIO.ReadBufferAsync(file);

                var width        = 0;
                var height       = 0;
                var format       = DirectXPixelFormat.B8G8R8A8UIntNormalized;
                var dialogResult = await BinaryDetailsInputDialog.ShowAsync();

                if (dialogResult == ContentDialogResult.Primary &&
                    ParseBinaryDetailsSizeBoxes(out width, out height))
                {
                    fileBitmap = CanvasBitmap.CreateFromBytes(_canvasDevice, buffer, width, height, format);
                }
                break;

            default:
                // open it with win2d
                using (var stream = await file.OpenReadAsync())
                {
                    fileBitmap = await CanvasBitmap.LoadAsync(_canvasDevice, stream);
                }
                break;
            }

            if (fileBitmap != null)
            {
                var size = fileBitmap.SizeInPixels;
                var backgroundSurface = _compositionGraphics.CreateDrawingSurface2(
                    new SizeInt32()
                {
                    Width = (int)size.Width, Height = (int)size.Height
                },
                    DirectXPixelFormat.B8G8R8A8UIntNormalized,
                    DirectXAlphaMode.Premultiplied);
                using (var drawingSession = CanvasComposition.CreateDrawingSession(backgroundSurface))
                {
                    drawingSession.FillRectangle(0, 0, size.Width, size.Height, _backgroundCavnasBrush);
                }

                var imageSurface = _compositionGraphics.CreateDrawingSurface2(
                    new SizeInt32()
                {
                    Width = (int)size.Width, Height = (int)size.Height
                },
                    DirectXPixelFormat.B8G8R8A8UIntNormalized,
                    DirectXAlphaMode.Premultiplied);
                using (var drawingSession = CanvasComposition.CreateDrawingSession(imageSurface))
                {
                    drawingSession.Clear(Colors.Transparent);
                    drawingSession.DrawImage(fileBitmap);
                }

                _backgroundBrush.Surface = backgroundSurface;
                _imageBrush.Surface      = imageSurface;
                ImageGrid.Width          = size.Width;
                ImageGrid.Height         = size.Height;
                ImageScrollViewer.ChangeView(0, 0, 1, true);
                if (_borderEnabled)
                {
                    ImageBorderBrush.Color = Colors.Black;
                }
                _currentFile = file;
            }
        }