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); } } }
private void CloseButton_Click(object sender, RoutedEventArgs e) { var x = ImageScrollViewer.ZoomFactor; ImageScrollViewer.ZoomToFactor(1); ZoomImage.Visibility = Windows.UI.Xaml.Visibility.Collapsed; }
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(); } } }
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); }
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); } } }
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; } }