private Rectangle GetVisibleRectangle(Control c) { // rectangle du controle en coordonnées écran Rectangle rect = c.RectangleToScreen(c.ClientRectangle); c = c.Parent; while (c != null) { rect = Rectangle.Intersect(rect, c.RectangleToScreen(c.ClientRectangle)); c = c.Parent; } // rectangle en coordonnées relatives au client rect = pnlCanvas.RectangleToClient(rect); return(rect); }