【问题标题】:C# get The most top, bottom, right and left point of a RectangleC#获取矩形的最上、下、右、左点
【发布时间】:2017-02-07 20:29:35
【问题描述】:

我处于这种情况:我有一个包含一些矩形的画布,这些矩形也可以旋转一个角度。我想获取这些矩形的顶部、底部、右侧和左侧端点,以便绘制一个可以包含所有这些矩形的形状。

这是一张图:

我想创建一个匹配 A、B、C、D 点的形状(多边形,而不是矩形)。

我该怎么做?

【问题讨论】:

  • 既然你知道每个点都由 X,Y 坐标组成,那么如果你有所有的点,你可以确定哪个是顶部(即最高 Y 值),最右边(最高X值)等
  • 右 - 将四个单独的矩形视为一个矩形。
  • 这是一个一般的多边形合并问题。首先,您需要确保所有多边形(在您的情况下为 4 个矩形)都是顺时针方向的。如果不是,则反转坐标顺序。然后,通过合并具有公共边的多边形来减少多边形数量。 顺时针测试:对边求和,(x2 − x1)(y2 + y1)。如果结果为正,则曲线为顺时针,如果结果为负,则曲线为逆时针。 (结果是封闭区域的两倍,采用 +/- 约定。)。
  • 问题是我真的不知道如何获得最多的顶部、底部、右侧和左侧点...从 Canvas.getLeft/right 等方法我只能得到一个点非旋转矩形...
  • 矩形是如何旋转的?

标签: c# wpf canvas


【解决方案1】:

遍历每个矩形并存储它们的 4 个点的坐标 (X,Y)。浏览此列表并选择符合您的标准的对,即最大 x、最大 y、最小 x、最小 y。这 4 个属于哪对坐标是包含矩形的多边形的边缘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-24
    • 2021-05-12
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多