Esempio n. 1
0
        private void Image_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            var waterMarkP  = WaterMarkContentControl.TranslatePoint(new Point(0, 0), ImageCanvas);
            var backgroundP = BackgroundImage.TranslatePoint(new Point(0, 0), ImageCanvas);

            var vector = waterMarkP - backgroundP;

            var oldFactX = vector.X / e.PreviousSize.Width;
            var oldFactY = vector.Y / e.PreviousSize.Height;

            var diffX = e.NewSize.Width - e.PreviousSize.Width;
            var diffY = e.NewSize.Height - e.PreviousSize.Height;

            var factX = e.NewSize.Width / e.PreviousSize.Width;
            var factY = e.NewSize.Height / e.PreviousSize.Height;

            if (double.IsInfinity(factX) || double.IsInfinity(factY))
            {
                return;
            }

            WaterMarkContentControl.Width  *= factX;
            WaterMarkContentControl.Height *= factY;

            var newX = backgroundP.X + e.NewSize.Width * oldFactX;
            var newY = backgroundP.Y + e.NewSize.Height * oldFactY;

            if (Math.Abs(backgroundP.Y) > 0.0001)
            {
                newY -= diffY * 1000 / 2000.0;
            }
            if (Math.Abs(backgroundP.X) > 0.0001)
            {
                newX -= diffX * 1000 / 2000.0;
            }

            if (newX <= ImageCanvas.ActualWidth && newX >= 0)
            {
                Canvas.SetLeft(WaterMarkContentControl, newX);
            }
            else
            {
                Canvas.SetLeft(WaterMarkContentControl, 0);
            }

            if (newY <= ImageCanvas.ActualHeight && newY >= 0)
            {
                Canvas.SetTop(WaterMarkContentControl, newY);
            }
            else
            {
                Canvas.SetTop(WaterMarkContentControl, 0);
            }
        }
Esempio n. 2
0
        private void ImageCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            var waterMarkP  = WaterMarkContentControl.TranslatePoint(new Point(0, 0), ImageCanvas);
            var backgroundP = BackgroundImage.TranslatePoint(new Point(0, 0), ImageCanvas);

            var diffX = e.NewSize.Width - e.PreviousSize.Width;
            var diffY = e.NewSize.Height - e.PreviousSize.Height;

            var newPosX = waterMarkP.X + diffX / 2.0;
            var newPosY = waterMarkP.Y + diffY / 2.0;

            if (backgroundP.X > 0 && Math.Abs(diffX) > 0.0001 && newPosX <= ImageCanvas.ActualWidth && newPosX >= 0)
            {
                Canvas.SetLeft(WaterMarkContentControl, newPosX);
            }

            if (backgroundP.Y > 0 && Math.Abs(diffY) > 0.0001 && newPosY <= ImageCanvas.ActualHeight && newPosY >= 0)
            {
                Canvas.SetTop(WaterMarkContentControl, newPosY);
            }
        }