首页 > 解决方案 > Graphics.IsVisible(Rectangle rect) 的文档是否错误?

问题描述

Microsoft 的在线文档说,此 Graphics 方法返回“如果 rect 参数指定的矩形包含在此 Graphics 的可见剪辑区域内,则返回 true;否则返回 false”。

他们真的是那个意思吗?如果 rect 的任何部分位于剪辑区域内,让它返回 true 会更有用。这样,如果 rect 是要绘制的某个对象的边界矩形,您就会知道是否没有对象在视图中并且您可以安全地跳过它。

我已经尝试了一些非常简单的 WinForms 代码,并且该方法的行为确实符合我的意愿,而不是文档中所说的那样。但我不愿意假设我是对的。有人有确切消息么?

当我谈论这方面的文档时,是否有人定义了“可见剪辑区域”?微软说它是“这个 Graphics 的剪辑区域和窗口的剪辑区域的交集”,但肯定不止于此:例如,某些 Graphics 对象甚至没有窗口(如果它们重新与内存中的位图相关联)。

实验表明,例如,如果您在大小为 X x Y 的矩形面板上绘画,则 Graphics 剪辑区域与 X x Y 矩形相交。显然,如果 Panel 大于其包含的 Form 并且部分滚动到视野之外,这将继续适用。但同样,最好知道实际规则是什么。

所有积累的智慧都被感激地接受。

标签: c#.netwinformsvisibility

解决方案


我不了解文档,但我的经验与您的观察非常一致,如果矩形的任何部分在图形的可见剪辑区域内,该方法将返回 true。

不要想太多。文档永远不会像代码那样精确。任何大量的文档都将包含这种不精确的定义。


推荐阅读