我目前正在处理一些渲染代码,我想知道 Graphics2D.draw(Shape) 在屏幕上的执行方式是否与屏幕外完全相同。如果是,有没有办法检查我的形状(Line2D)是否在屏幕上?
问问题
136 次
1 回答
1
取决于您所说的“完全相同”的含义。
就您的代码中对 draw-something() 的调用而言,它们正常进行。不同的是,在渲染链的某处,检测到形状实际上没有落入实际渲染区域的情况,并且实际上没有为形状输出像素。
至于检测是否“在屏幕上”,这取决于您将屏幕定义为什么。合理地,您会将其定义为 Graphics 对象描述的区域(很可能只是屏幕的一部分,或者完全不在屏幕上,哎呀,它可能是一台打印机!)。
如果您没有更改 Graphics 实例的剪辑区域,getClipBounds() 会为您提供实际呈现图形的矩形。如果您的图形来自 Swing 组件,您还可以将组件尺寸替换为渲染区域。
一旦你有了实际的 Rectangle,就可以使用 Shape 提供的方法来检测碰撞(contains()、intersects() 等)。
于 2016-06-01T19:54:47.233 回答