JPanel 実装では、paint() メソッドが以前の描画を上書きするため、四角形が消えます。これを防ぐために、アプローチを変更します。
JPanel に直接描画する代わりに、ペイント サーフェスとして BufferedImage (canvasImage) を使用します。これにより、以前の描画に影響を与えることなく、イメージを永続的に変更できます。
描画に CanvasImage を使用する、修正されたペイント() メソッドを次に示します:
@Override
public void paint(Graphics g) {
super.paint(g); // Handle inherited painting tasks
Graphics2D bg = (Graphics2D) g;
bg.drawImage(canvasImage, 0, 0, this);
}
次のように JPanel コンストラクターで CanvasImage を初期化します。
canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
そしてそのグラフィックスコンテキストを設定します描画:
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(Color.WHITE);
cg.fillRect(0, 0, width, height);
これで、DrawRect() メソッドで CanvasImage を直接変更できるようになりました:
public void DrawRect(int x, int y, int size, Color c) {
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(c);
cg.fillRect(x, y, size, size);
}
このアプローチにはいくつかの利点があります:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3