C# 获取控件在客户区的坐标,相对于顶级父容器的坐标
/// <summary>
/// 获取控件在客户区的坐标,相对于顶级父容器的坐标
/// </summary>
/// <param name="c">控件</param>
/// <returns>坐标点</returns>
public static Point LocationOnClient(Control c)
{
    var retval = new Point(0, 0);
    for (; c.Parent != null; c = c.Parent)
    {
        retval.Offset(c.Location);
    }
    return retval;
}


1)PointToClient 将指定屏幕点的位置计算成工作区坐标。坐标原点为黄色区域左上角,X轴方向从左到右;Y轴方向从上到下;坐标单位为像素;
2)PointToScreen 将指定工作区点的位置计算成屏幕坐标。坐标原点在屏幕左上角,X轴方向从左到右;Y轴方向从上到下;坐标单位为像素;
Control.PointToClient作用
比如要用鼠标在窗体内一个picturebox上画矩形,怎么把鼠标坐标切换到picturebox中的内部坐标呢,这样:
pictureboxGra.DrawRectangle(Pens.Blue, new Rectangle() { Location = pictureBox1.PointToClient(start), Width = end.X - start.X, Height = end.Y - start.Y });
 
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号