Exemple #1
0
        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();
    }