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 に答える