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