/// <summary> /// Converts local coordinates to canvas coordinates. /// </summary> /// <param name="pnt">Local coordinates.</param> /// <returns>Canvas coordinates.</returns> public virtual Point LocalPosToCanvas(Point pnt) { if (m_Parent != null) { int x = pnt.X + X; int y = pnt.Y + Y; // If our parent is a container and we're a child of it // add its offset onto us. // var container = m_Parent as Container; if (container != null && container.Children.Contains(this)) { x += container.PanelBounds.X; y += container.PanelBounds.Y; } return(m_Parent.LocalPosToCanvas(new Point(x, y))); } return(pnt); }