汚れた領域を塗り直すと、パフォーマンスが改善されますか?Swingで汚れた領域のみを再描画する方法は?
答えが「はい」の場合、どうすればよいですか? 元はpaintaint(Graphics)を呼び出すためにrepaint()を使っています。しかし、最近私は、repaint()が実際には塗り替え(0,0、幅、高さ)していることを認識しています。 repaint()でパラメータを指定してダーティ領域を指定すると、そのデータはどのようにpaintComponent(Graphics)に渡されますか?
答えて
私は汚い地域、どのような方法でそれがpaintComponent(グラフィックス)に、そのようなデータを渡しますを指定するパラメータで再描画()を使用している場合は?
「クリップ境界」またはグラフィックスオブジェクトは、ダーティ領域を再描画
1.Doesのみパフォーマンスを向上させる特定の領域に設定されますか?
なぜですか?絵画の問題がありますか?理由がない限り、コードをマイクロ最適化しないでください。コードは維持したりデバッグするのが難しくなります。余分なロジックを追加して、どの領域を再描画する必要があるかを判断します。
また、複数の再描画要求が1つの要求にマージされることに注意してください。したがって、コンポーネントの左上隅を再描画する要求を出し、直ちに右下隅の塗り替えを要求すると、これら2つの要求は両方の領域を含む領域にマージされます。つまり、コンポーネント全体が再描画されます。あなたは何のためにも余分な仕事をしています。
JComponent
の「汚れた」領域のみを再描画するには、RepaintManager
を使用する必要があります。あなたも、あなた自身のカスタムバージョンでRepaintManager
を置き換えることができ
RepaintManager rm = RepaintManager.currentManager(component);
:あなたが現在RepaintManager
を得ることができます。詳細はOracleのウェブサイトをご覧ください。
RepaintManagerを直接使用しないでください汚れた領域をペイントするRepaintリクエストは、コンポーネントに対して再描画(...)リクエストを行うたびにSwingによって自動的にRepaintManagerに転送されます。指定されたリージョンはダーティリージョンとして追加されます。 RepaintManagerは、これらのダーティ領域を統合して、コンポーネントのpaint()を呼び出します。 – camickr
- 1. テキスト領域での描画方法は?
- 2. pygtk描画領域の再描画が高速ですか?
- 3. 描画領域に画像を描画
- 4. Googleマップで領域を描画する方法は?
- 5. Graphics.DrawImageで描画領域を拡張する方法C#
- 6. KMLコンテンツの領域を描画する
- 7. ScrollWindowは一部の領域を再描画しません
- 8. アンドロイドベクトル描画領域固有
- 9. MKTileOverlay:特定のタイルまたは領域を再読み込みする方法
- 10. キャンバスからフラッシュ領域を再描画しますか?
- 11. Windowsフォームの描画領域のサイズを取得する方法は?
- 12. Googleマップ上の描画領域
- 13. Swingでレイアウトとそのエッジのセルを描画する方法は? Swingで
- 14. Scrollview領域外のScrollviewの子描画/描画
- 15. DataGridViewの描画で黒い領域が表示される
- 16. ios-chartsで横に積み重なった領域グラフを描画する方法
- 17. Java Swingで再描画した後にのみイベントをトリガーしますか?
- 18. フリーハンドイメージビットマップ領域内にクロップ描画
- 19. imfreehandを使用して複数のバイナリ領域を描画する方法
- 20. GTKの描画領域を更新するには
- 21. XML描画可能領域の中心に垂直形状を描画する方法
- 22. Swingを使ったマルチスレッド:更新して再描画するスレッド?
- 23. WindowProcがWM_PAINTメッセージを受信したときにウィンドウの汚れた領域を見つける方法...?
- 24. opencvのpythonで画像の領域を埋める方法は?
- 25. ラジアルグラデーションを描画するUIViewのiOS上半分の領域
- 26. OpenCVで特定の領域を再マップする方法
- 27. フィールドを再描画する方法は?
- 28. java.awt.Windowを再描画する方法は?
- 29. ctx.rectを再描画する方法は?
- 30. は、可視領域にのみキャンバスを描いています
* "コードを使用してコードを最適化しない限り、ダーティ領域の再ペイントではパフォーマンスが向上しますか?"現在の 'clip'境界をチェックして、それに現れるものだけを更新するのでない限り、パフォーマンスの改善はほとんどありません。つまり、Javaはまだ終了したビットマップ全体を画面にペイントする必要があるからです - 件名の説明がある[AWT and Swingのペイント](http://www.oracle.com/technetwork/java/painting-140037.html)をご覧ください – MadProgrammer