ホームページ >Java >&#&チュートリアル >JPanel で長方形を永続的に描画する方法: BufferedImages を使用して上書きを回避しますか?
JPanel 実装では、paint() メソッドが以前の描画を上書きするため、四角形が消えます。これを防ぐために、アプローチを変更します。
JPanel に直接描画する代わりに、ペイント サーフェスとして BufferedImage (canvasImage) を使用します。これにより、以前の描画に影響を与えることなく、イメージを永続的に変更できます。
描画に CanvasImage を使用する、変更されたペイント() メソッドを次に示します:
<code class="java">@Override public void paint(Graphics g) { super.paint(g); // Handle inherited painting tasks Graphics2D bg = (Graphics2D) g; bg.drawImage(canvasImage, 0, 0, this); }</code>
次のように JPanel コンストラクターで CanvasImage を初期化します:
<code class="java">canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);</code>
そして描画用のグラフィックス コンテキストを設定します:
<code class="java">Graphics2D cg = canvasImage.createGraphics(); cg.setColor(Color.WHITE); cg.fillRect(0, 0, width, height);</code>
これで、DrawRect() メソッドは CanvasImage を直接変更できるようになりました。
<code class="java">public void DrawRect(int x, int y, int size, Color c) { Graphics2D cg = canvasImage.createGraphics(); cg.setColor(c); cg.fillRect(x, y, size, size); }</code>
このアプローチにはいくつかの利点があります。
以上がJPanel で長方形を永続的に描画する方法: BufferedImages を使用して上書きを回避しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。