private void UpdateRotation(double deltaR) { // calculate new rotated isometric projection rotation = ((rotation + deltaR) + 360) % 360; var transform = Projections.Isometric.Clone(); var rotate = Matrix2D.CreateRotateInstance((Math.PI * rotation) / 180); rotate.Multiply(transform, MatrixOrder.Append); // set new projection keeping the center of the content rect graphControl.UpdateContentRect(); var center = graphControl.ContentRect.Center; graphControl.Projection = rotate; // update z-order of model items according to new rotation ((IsometricGraphModelManager)graphControl.GraphModelManager).Update(); graphControl.Center = center; graphControl.Invalidate(); }