如果 Shape 在屏幕外,是否执行 Graphics2D.draw?
Is Graphics2D.draw performed if the Shape is offscreen?
我目前正在处理一些渲染代码,我想知道 Graphics2D.draw(Shape) 在屏幕上和屏幕外的执行方式是否完全相同。
如果是,有没有办法检查我的形状(Line2D)是否在屏幕上?
取决于"exactly the same way"的意思。
就从您的代码调用 draw-something() 而言,它们正常进行。不同之处在于,在渲染链的某处检测到形状实际上没有落入实际渲染区域的情况,并且实际上没有为形状输出像素。
至于检测是不是"on screen",那要看你把屏幕定义成什么了。您可以合理地将其定义为您的 Graphics 对象描述的区域(很可能只是屏幕的一部分,或者完全不在屏幕上,它可能是一台打印机!)。
如果您没有更改 Graphics 实例的剪辑区域,getClipBounds() 将为您提供实际呈现图形的矩形。如果你的图形来自Swing组件,你也可以用组件尺寸代替渲染区域。
一旦有了实际的矩形,就可以使用 Shape 提供的方法来检测碰撞(contains()、intersects() 等)。
我目前正在处理一些渲染代码,我想知道 Graphics2D.draw(Shape) 在屏幕上和屏幕外的执行方式是否完全相同。 如果是,有没有办法检查我的形状(Line2D)是否在屏幕上?
取决于"exactly the same way"的意思。
就从您的代码调用 draw-something() 而言,它们正常进行。不同之处在于,在渲染链的某处检测到形状实际上没有落入实际渲染区域的情况,并且实际上没有为形状输出像素。
至于检测是不是"on screen",那要看你把屏幕定义成什么了。您可以合理地将其定义为您的 Graphics 对象描述的区域(很可能只是屏幕的一部分,或者完全不在屏幕上,它可能是一台打印机!)。
如果您没有更改 Graphics 实例的剪辑区域,getClipBounds() 将为您提供实际呈现图形的矩形。如果你的图形来自Swing组件,你也可以用组件尺寸代替渲染区域。
一旦有了实际的矩形,就可以使用 Shape 提供的方法来检测碰撞(contains()、intersects() 等)。