如何获得矩形区域的点

时间:2015-02-19 23:59:03

标签: c# winforms

我在网上搜索,但我仍然在黑暗中。当用户在C#Winform项目的控件中突出显示文本时,我需要获取矩形区域的点。例如,用户突出显示为下图。我需要以下几点来画框。

  • X1:左下角的水平坐标。
  • Y1:左下角的垂直坐标。
  • X2:右下角的水平坐标。
  • Y2:右下角的垂直坐标。
  • X3:右上角的水平坐标。
  • Y3:右上角的垂直坐标。
  • X4:左上角的水平坐标。
  • Y4:左上角的垂直坐标。

我只知道我可以获得鼠标按下事件的起点(X4和Y4)以及鼠标按下事件的终点(X2和Y2)。希望有人可以告诉我示例或链接来做到这一点。

enter image description here

1 个答案:

答案 0 :(得分:1)

由于您了解MousDown和MouseUp坐标,因此您可以阅读以下内容以确定屏幕/客户端坐标(如果需要)。

使用2个点创建一个矩形:

Rectangle theRectangle = new Rectangle
    (new Point(v1, v2), new Size(v4, v5));

另一方面,我真的不明白你指的是哪个矩形区域,正如peter-duniho对你的帖子所评论的那样。

屏幕坐标

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

客户协调

Windows窗体应用程序使用客户端坐标指定窗体或控件中的点的位置。客户端坐标的原点是控件或表单的客户区域的左上角。客户端坐标确保应用程序在绘制表单或控件时可以使用一致的坐标值,而不管窗体上的窗体或控件的位置如何。 客户区的尺寸也由包含该区域的客户坐标的矩形结构描述。在所有情况下,矩形的左上角坐标都包含在客户区域中,而右下角坐标则被排除在外。图形操作不包括客户区的右边和下边。例如,FillRectangle方法将填充指定矩形的右边缘和下边缘,但不包括这些边缘。

从一种坐标到另一种坐标

有时,您可能需要从屏幕坐标映射到客户端坐标。您可以使用控件类中提供的 PointToClient PointToScreen 方法轻松完成此操作。例如,Control的MousePosition属性以屏幕坐标报告,但您可能希望将这些属性转换为客户端坐标。