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(); }
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(); }