私は現在、いくつかのレンダリングコードに取り組んでおり、Graphics2D.draw(Shape)がオンスクリーンでオフスクリーンと全く同じ方法で実行されているのだろうかと思いました。 私の形状(Line2D)がオンスクリーンであるかどうかを確認する方法はありますか?シェイプがオフスクリーンの場合、Graphics2D.drawが実行されますか?
0
A
答えて
1
「まったく同じ」という意味に依存します。
あなたのコードからdraw-something()を呼び出すことに関しては、通常通りに行われます。異なっているのは、レンダリングチェーンのどこかで、実際のレンダリング領域に実際には入っていないという条件が検出され、その形状に対して実際にピクセルが出力されないということです。
「画面上に何か」があるかどうかを検出するためには、画面を定義する内容によって異なります。これは、Graphicsオブジェクトで記述された領域(画面の一部であっても、画面から完全に離れていても、プリンタであってもかまいません)として定義するのが合理的です。
Graphicsインスタンスのクリップ領域を変更していない場合、getClipBounds()はグラフィックスが実際にレンダリングされる矩形を提供します。スウィングコンポーネントからのグラフィックスの場合は、レンダリング領域のコンポーネントのサイズを置き換えることもできます。
実際の矩形を取得したら、Shapeが提供するメソッド(contains()、intersects()など)を使用して衝突を検出できます。
関連する問題
- 1. 文が実行されない場合
- 2. UNNotificationServiceExtensionが実行されない場合があります
- 3. document.readyが実行されない場合があります
- 4. ステートメントは実行されますが条件が満たされない場合
- 5. ビューがプロパティの場合、InitWithFrameは実行されません。
- 6. データの場合はForm_validationが実行されていません
- 7. コマンドはcmditプロンプトから正常に実行されますが、Autoitから実行されない場合
- 8. LLVM:CallGraphWrapperPassが必要な場合、Clangは実行されません
- 9. NoClassDefFoundError + ClassNotFoundExceptionがJARから実行された場合
- 10. キュウリの「セットアップメソッド」は、そのクラスのステップが実行された場合にのみ実行されます。
- 11. サーバー側のコードが別のドメインでホストされている場合、ajaxが実行されますか?
- 12. 条件式が-1と評価された場合にブロックが実行される場合のPython
- 13. メソッドが現在のクラスでまだ実行されていない場合は、メソッドを実行しますか?
- 14. .NETでは、オブジェクトのコンストラクタが実行されなかった場合でもファイナライザを実行できますか?
- 15. 列がnullの場合、DynamicReportsの行が削除されます
- 16. ブラウザがURLを提案した場合、ログアウトコードが実行されます
- 17. 最後のビルドからファイルが変更された場合にのみ、プラグインの実行を実行します。
- 18. テストが実行されなかった場合SonarQubeの品質ゲートが無効
- 19. NoSuchFieldError Javaから実行されたがコマンドラインから実行されなかった場合
- 20. pythonのif文が実行されていない場合
- 21. ジョブが実行されている場合の戻り値
- 22. チェックリモートプロセスが実行されている場合(Linux)の
- 23. pythonのブロックがTrueステートメントで実行されない場合
- 24. forループ内の文がループで実行されない場合
- 25. このコードが実行されている場合はコードを実行
- 26. 配列が一定の長さの場合、Androidアプリが実行されない
- 27. 条件が満たされずにコードが実行された場合
- 28. Jmeterでスクリプトが実行された場合にファイルがアップロードされない
- 29. forループが検出された場合にループが実行される
- 30. 実行前にシート内のセルがクリックされた場合、マクロが正しく実行されない
"まったく同じ方法"とは、オフスクリーンシェイプをレンダリングするときのパフォーマンスの点で違いがないことを意味しました。 – RoiEX
@RoiEXパフォーマンスの差がかなり大きくなる可能性があります。何かが実際に描画される前に、グラフィックスに割り当てられたすべてのメモリバッファのサイズが制限された後、実際にレンダリング領域内にあることを確認する必要があります。外側に描画するとプログラムがクラッシュする:)チェックは常にそこにあり、条件付きで重い作業のすべてまたは一部はスキップされます。 – Durandal