0

我目前正在处理一些渲染代码,我想知道 Graphics2D.draw(Shape) 在屏幕上的执行方式是否与屏幕外完全相同。如果是,有没有办法检查我的形状(Line2D)是否在屏幕上?

4

1 回答 1

1

取决于您所说的“完全相同”的含义。

就您的代码中对 draw-something() 的调用而言,它们正常进行。不同的是,在渲染链的某处,检测到形状实际上没有落入实际渲染区域的情况,并且实际上没有为形状输出像素。

至于检测是否“在屏幕上”,这取决于您将屏幕定义为什么。合理地,您会将其定义为 Graphics 对象描述的区域(很可能只是屏幕的一部分,或者完全不在屏幕上,哎呀,它可能是一台打印机!)。

如果您没有更改 Graphics 实例的剪辑区域,getClipBounds() 会为您提供实际呈现图形的矩形。如果您的图形来自 Swing 组件,您还可以将组件尺寸替换为渲染区域。

一旦你有了实际的 Rectangle,就可以使用 Shape 提供的方法来检测碰撞(contains()、intersects() 等)。

于 2016-06-01T19:54:47.233 回答