Пример #1
0
        private void TreeContainer_MouseMove(object sender, MouseEventArgs e)
        {
            if (!leftMouseDragged)
            {
                return;
            }

            var position  = e.GetPosition(this);
            var transform = TreeCanvas.RenderTransform as MatrixTransform;
            var matrix    = transform.Matrix;

            matrix.Translate(position.X - lastMousePos.X, position.Y - lastMousePos.Y);
            transform.Matrix = matrix;
            lastMousePos     = position;
            TreeCanvas.UpdateLayout();
        }
Пример #2
0
        private void TreeContainer_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            var position  = e.GetPosition(TreeCanvas);
            var transform = TreeCanvas.RenderTransform as MatrixTransform;
            var matrix    = transform.Matrix;

            var scale          = e.Delta >= 0 ? scaleFactor : (1.0 / scaleFactor);
            var newScaleFactor = matrix.M11 * scale;

            if (!(newScaleFactor < MaxScale && newScaleFactor > MinScale))
            {
                return;
            }

            matrix.ScaleAtPrepend(scale, scale, position.X, position.Y);
            transform.Matrix = matrix;
            TreeCanvas.UpdateLayout();
        }