사라지지 않는 직사각형 그리기
코드에서 JPanel을 확장하는 MyPanel 클래스를 만들었습니다. 이 클래스 내에서 사각형을 그리는 데 여러 인수를 사용하는 DrawRect 메서드를 정의합니다. 그러나 repaint()를 호출하면 이전 직사각형을 포함하여 전체 패널을 다시 그립니다.
이를 방지하려면 대신 Graphics2D.drawImage()를 사용하여 기존 캔버스 위에 직사각형을 그릴 수 있습니다. 코드를 수정하는 방법은 다음과 같습니다.
<code class="java">class MyPanel extends JPanel { private BufferedImage canvasImage; // Create a BufferedImage to store the canvas public void DrawRect(int x, int y, int size, Color c) { if (canvasImage == null) { canvasImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = canvasImage.createGraphics(); g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.dispose(); } Graphics2D g = canvasImage.createGraphics(); g.setColor(c); g.fillRect(x, y, size, size); g.dispose(); repaint(); } @Override public void paint(Graphics g) { super.paint(g); g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage onto the panel } }</code>
참고:
위 내용은 JPanel에서 사라지지 않는 직사각형을 그리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!