c# - 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 并且部分滚动到视野之外,这将继续适用。但同样,最好知道实际规则是什么。
所有积累的智慧都被感激地接受。
解决方案
我不了解文档,但我的经验与您的观察非常一致,如果矩形的任何部分在图形的可见剪辑区域内,该方法将返回 true。
不要想太多。文档永远不会像代码那样精确。任何大量的文档都将包含这种不精确的定义。
推荐阅读
- java - Saving sucessfully copied Files from A to B in Java when Programm crashes?
- sql - MariaDB - LEFT JOIN does not return all rows
- android - 如果按钮在水平线性布局中的微调器之后,则无法正确显示
- javascript - Simplifying an object created using map
- javascript - 动态加载脚本时,如何让 WebStorm 识别本地导入的文件?
- python - 我可以通过按键更改 pygame 对象的恒定移动方向吗?
- python - 在 Visual Studio 之外启动 python virtualenv 代码
- typescript - TypeScript:根据名称有条件地将一组类型转换为一组不同的类型
- jquery - 当下拉列表有超过 5 个动态选项时,附加功能不起作用
- amazon-s3 - 如何处理 s3 对象名称中的加号(+)符号?