I would use a function like this:
public void RotateRectangle(Graphics g, Rectangle r, float angle) { using (Matrix m = new Matrix()) { m.RotateAt(angle, new PointF(r.Left + (r.Width / 2), r.Top + (r.Height / 2))); g.Transform = m; g.DrawRectangle(Pens.Black, r); g.ResetTransform(); } }
It uses a matrix to rotate at a specific point, which should be in the middle of each rectangle.
Then in your drawing method use it to draw your rectangles:
g.SmoothingMode = SmoothingMode.HighQuality; //g.DrawRectangle(new Pen(Color.Black), r1); //DoRotation(e); //g.DrawRectangle(new Pen(Color.Black), r2); RotateRectangle(g, r1, 45); RotateRectangle(g, r2, 65);
In addition, here is a line for connecting two rectangles:
g.DrawLine(Pens.Black, new Point(r1.Left + r1.Width / 2, r1.Top + r1.Height / 2), new Point(r2.Left + r2.Width / 2, r2.Top + r2.Height / 2));
Using these settings:
private Rectangle r1 = new Rectangle(100, 60, 32, 32); private Rectangle r2 = new Rectangle(160, 100, 32, 32);
Led to:
