找到一组图形的中心

时间:2015-07-03 17:47:58

标签: c# graphics

我有一个带有面板的表单,其中绘制了一组复杂的图形(在图像中用蓝色圆圈表示):

enter image description here

使用temp[c(TRUE,temp$In[-length(temp$In)]!=temp$In[-1]),] 类的DrawLineDrawEllipse方法绘制图形。

我需要找到图形集的全局中心(图像上的黄点),以便我可以在之后应用一些转换,例如在面板上居中显示图形集。

我能想到的最直接的解决方法是找到图形的边界,因此它们包含在矩形框架(图像上的红色框)中,然后将框架的宽度和高度除以2。 / p>

但我怎样才能做到这一点? 是否有方法可以让我找到整个图形集的顶部,底部,左侧和右侧边界?

1 个答案:

答案 0 :(得分:1)

我不知道Graphics中有任何方法可以执行您正在寻找的内容,但假设您知道每个组件图像的尺寸,那么滚动您自己的方法应该相对容易。各种DrawEllipse方法都采用某种形式的边界矩形,因此您已经获得了所需的所有信息。

最直接的方法是在绘制每个图像时简单地跟踪最左边,右边,顶部和底部边界,然后从这些尺寸形成完整的边界矩形。您还需要考虑用于绘制图像的Pen的宽度。

作为替代方案,您可能需要查看GraphicsPath类。 GraphicsPath.GetBounds会或多或少地为您提供您正在寻找的东西。如果GraphicsPath对您不起作用,那么我认为您可能无法编写自己的代码。