关于VB.NET中动态设置控件坐标的使用心得休会

来源:互联网 发布:windows phone磁贴 编辑:程序博客网 时间:2024/05/01 06:53

在vb.net中,当要获取某一控件在窗体中的位置时,可以使用Control.PointToScreen 方法转换成屏幕坐标

可以使用Control.PointToClient  方法将屏坐标转换成工作区坐标;当控件属于其它容器控件时须使用:

       Dim p As Point = Control.Parent.PointToScreen(Control.Location)
        p = Control.FindForm.PointToClient(p)

使用如上方法,无论控件放在何容器中,都会得到该控件相对于窗体上的工作区坐标。


=================================================================================

坐标简介

=================================================================================

Windows 窗体的坐标系基于设备坐标,在 Windows 窗体中绘制时的基本量度单位是设备单位(通常为像素)。屏幕上的点通过 x 和 y 坐标对描述,x 坐标向右递增,y 坐标从上往下递增。原点相对于屏幕的位置因指定的是屏幕坐标还是工作区坐标而异。

屏幕坐标

Windows 窗体应用程序用屏幕坐标指定窗口在屏幕上的位置。对于屏幕坐标而言,原点是屏幕的左上角。窗口的完整位置通常用 Rectangle 结构来描述,该结构包含定义窗口的左上角和右下角的两个点的屏幕坐标。

工作区坐标

Windows 窗体应用程序使用工作区坐标指定窗体或控件中的点的位置。工作区坐标的原点是控件或窗体的工作区的左上角。工作区坐标确保了无论窗体或控件在屏幕上的位置如何,应用程序在窗体或控件中绘制期间都可以使用一致的坐标值。

工作区的尺寸也用 Rectangle 结构来描述,该结构包含该区域的工作区坐标。在所有情况下,矩形的左上角坐标都包含在工作区中,而右下角坐标则排除在工作区之外。图形操作不包括工作区的右边缘和下边缘。例如,FillRectangle 方法将一直填充到指定矩形的右边缘和下边缘,但是不包括这两条边。

从一类坐标映射到另一类坐标

您可能偶尔需要从屏幕坐标映射到工作区坐标。通过使用 Control 类中的 PointToClientPointToScreen 方法,可以轻松实现这一映射。例如,ControlMousePosition 属性用屏幕坐标报告,但是您可能想将它们转换成工作区坐标。

 
原创粉丝点击