我有一个带有面板的表单,其中绘制了一组复杂的图形(在图像中用蓝色圆圈表示):
使用temp[c(TRUE,temp$In[-length(temp$In)]!=temp$In[-1]),]
类的DrawLine
和DrawEllipse
方法绘制图形。
我需要找到图形集的全局中心(图像上的黄点),以便我可以在之后应用一些转换,例如在面板上居中显示图形集。
我能想到的最直接的解决方法是找到图形的边界,因此它们包含在矩形框架(图像上的红色框)中,然后将框架的宽度和高度除以2。 / p>
但我怎样才能做到这一点? 是否有方法可以让我找到整个图形集的顶部,底部,左侧和右侧边界?
答案 0 :(得分:1)
我不知道Graphics
中有任何方法可以执行您正在寻找的内容,但假设您知道每个组件图像的尺寸,那么滚动您自己的方法应该相对容易。各种DrawEllipse
方法都采用某种形式的边界矩形,因此您已经获得了所需的所有信息。
最直接的方法是在绘制每个图像时简单地跟踪最左边,右边,顶部和底部边界,然后从这些尺寸形成完整的边界矩形。您还需要考虑用于绘制图像的Pen
的宽度。
作为替代方案,您可能需要查看GraphicsPath
类。 GraphicsPath.GetBounds
会或多或少地为您提供您正在寻找的东西。如果GraphicsPath
对您不起作用,那么我认为您可能无法编写自己的代码。