Beispiel #1
0
        private void ImageShow_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            var horizontalOffset = ImageScrollViewer.HorizontalOffset;
            var verticalOffset   = ImageScrollViewer.VerticalOffset;

            if (e.Delta > 0)
            {
                double delta = 1.1;
                ImageShow.Width  *= delta;
                ImageShow.Height *= delta;
                ImageScrollViewer.ScrollToHorizontalOffset(horizontalOffset * delta);
                ImageScrollViewer.ScrollToVerticalOffset(verticalOffset * delta);
            }
            else
            {
                if (e.Delta < 0)
                {
                    double delta = 0.9;
                    ImageShow.Width  *= delta;
                    ImageShow.Height *= delta;
                    ImageScrollViewer.ScrollToHorizontalOffset(horizontalOffset * delta);
                    ImageScrollViewer.ScrollToVerticalOffset(verticalOffset * delta);
                }
            }
        }
Beispiel #2
0
        private void CloseButton_Click(object sender, RoutedEventArgs e)
        {
            var x = ImageScrollViewer.ZoomFactor;

            ImageScrollViewer.ZoomToFactor(1);
            ZoomImage.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
        }
Beispiel #3
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();
                }
            }
        }
Beispiel #4
0
        void OnSliderValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e)
        {
            ImageScaleTransform.ScaleX = e.NewValue;
            ImageScaleTransform.ScaleY = e.NewValue;

            var centerOfViewport = new Point(ImageScrollViewer.ViewportWidth / 2, ImageScrollViewer.ViewportHeight / 2);

            _lastCenterPositionOnTarget = ImageScrollViewer.TranslatePoint(centerOfViewport, ImageGrid);
        }
Beispiel #5
0
        void OnScrollViewerScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            if (e.ExtentHeightChange != 0 || e.ExtentWidthChange != 0)
            {
                Point?targetBefore = null;
                Point?targetNow    = null;

                if (!_lastMousePositionOnTarget.HasValue)
                {
                    if (_lastCenterPositionOnTarget.HasValue)
                    {
                        var centerOfViewport  = new Point(ImageScrollViewer.ViewportWidth / 2, ImageScrollViewer.ViewportHeight / 2);
                        var centerOfTargetNow = ImageScrollViewer.TranslatePoint(centerOfViewport, ImageGrid);

                        targetBefore = _lastCenterPositionOnTarget;
                        targetNow    = centerOfTargetNow;
                    }
                }
                else
                {
                    targetBefore = _lastMousePositionOnTarget;
                    targetNow    = Mouse.GetPosition(ImageGrid);

                    _lastMousePositionOnTarget = null;
                }

                if (targetBefore.HasValue)
                {
                    var dXInTargetPixels = targetNow.Value.X - targetBefore.Value.X;
                    var dYInTargetPixels = targetNow.Value.Y - targetBefore.Value.Y;

                    var multiplicatorX = e.ExtentWidth / ImageGrid.Width;
                    var multiplicatorY = e.ExtentHeight / ImageGrid.Height;

                    var newOffsetX = ImageScrollViewer.HorizontalOffset - dXInTargetPixels * multiplicatorX;
                    var newOffsetY = ImageScrollViewer.VerticalOffset - dYInTargetPixels * multiplicatorY;

                    if (double.IsNaN(newOffsetX) || double.IsNaN(newOffsetY))
                    {
                        return;
                    }

                    ImageScrollViewer.ScrollToHorizontalOffset(newOffsetX);
                    ImageScrollViewer.ScrollToVerticalOffset(newOffsetY);
                }
            }
        }
Beispiel #6
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;
            }
        }