protected override SizeF ArrangeOverride(SizeF finalSize) { float x = (finalSize.Width - DesiredSize.Width) / 2; float y = (finalSize.Height - DesiredSize.Height) / 2; CenterBackgroundImage.Arrange(GetImageRect(x, y, CenterBackgroundImage)); LeftImage.Arrange(GetImageRect(x, y, LeftImage)); RightImage.Arrange(GetImageRect(x, y, RightImage)); TopImage.Arrange(GetImageRect(x, y, TopImage)); BottomImage.Arrange(GetImageRect(x, y, BottomImage)); FillImage.Arrange(GetImageRect(x, y, FillImage)); return(finalSize); }
private void Window_Loaded(object sender, RoutedEventArgs e) { #region Size check var left = NewList[0].Path.SourceFrom(); var right = CurrentList[0].Path.SourceFrom(); //Left: New, Right: Current LeftImage.Source = left; RightImage.Source = right; //The image should be displayed based on the scale of the screen. _leftScale = Math.Round(left.DpiX / 96d, 2); _rightScale = Math.Round(right.DpiX / 96d, 2); var scale = this.Scale(); _leftDpi = left.DpiX; _rightDpi = right.DpiX; _leftScaleDiff = Math.Round(scale / _leftScale, 2); _rightScaleDiff = Math.Round(scale / _rightScale, 2); LeftImage.Width = _leftWidth = left.Width / _leftScaleDiff; LeftImage.Height = _leftHeight = left.Height / _leftScaleDiff; RightImage.Width = _rightWidth = right.Width / _rightScaleDiff; RightImage.Height = _rightHeight = right.Height / _rightScaleDiff; #endregion CanvasSizeTextBlock.Text = $"{right.PixelWidth} × {right.PixelHeight} • {Math.Round(left.DpiX, 0)} {LocalizationHelper.Get("S.Resize.Dpi")}"; LeftImageSizeTextBlock.Text = $"{left.PixelWidth} × {left.PixelHeight} • {Math.Round(left.DpiX, 0)} {LocalizationHelper.Get("S.Resize.Dpi")}"; RightImageSizeTextBlock.Text = $"{right.PixelWidth} × {right.PixelHeight} • {Math.Round(right.DpiX, 0)} {LocalizationHelper.Get("S.Resize.Dpi")}"; #region Initial sizing LeftImage.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); LeftImage.Arrange(new Rect(new Point(0, 0), LeftImage.DesiredSize)); RightImage.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); RightImage.Arrange(new Rect(new Point(0, 0), RightImage.DesiredSize)); if (Math.Abs(LeftImage.ActualWidth - RightImage.ActualWidth) > 0.01 || Math.Abs(LeftImage.ActualHeight - RightImage.ActualHeight) > 0.01) { StatusBand.Warning(LocalizationHelper.Get("S.InsertFrames.DifferentSizes")); } LeftCanvas.Width = LeftImage.ActualWidth; LeftCanvas.Height = LeftImage.ActualHeight; RightCanvas.Width = RightImage.ActualWidth; RightCanvas.Height = RightImage.ActualHeight; EqualizeSizes(); #endregion MouseLeftButtonDown += Unselect_MouseLeftButtonDown; LeftImage.MouseLeftButtonDown += Select_PreviewMouseLeftButtonDown; LeftCanvas.MouseLeftButtonDown += Select_PreviewMouseLeftButtonDown; RightImage.MouseLeftButtonDown += Select_PreviewMouseLeftButtonDown; RightCanvas.MouseLeftButtonDown += Select_PreviewMouseLeftButtonDown; LeftCanvas.SizeChanged += Canvas_SizeChanged; RightCanvas.SizeChanged += Canvas_SizeChanged; UpdateLayout(); }