>Java >java지도 시간 >성능 저하 없이 JPanel에서 영구 직사각형을 그리는 방법은 무엇입니까?

성능 저하 없이 JPanel에서 영구 직사각형을 그리는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-30 05:24:02409검색

How to Draw Persistent Rectangles in a JPanel Without Performance Degradation?

지속되는 직사각형 그리기

문제:

과도한 작업으로 인해 시스템 속도가 느려지지 않고 다시 그리기 호출에도 불구하고 계속 표시되는 JPanel에서 직사각형 만들기 다시 그리기.

해결책:

BufferedImage를 페인팅 표면으로 활용합니다.

접근 방식:

  1. BufferedImage를 사용하여 JPanel 하위 클래스를 생성합니다. 그리기 위한 캔버스.
  2. BufferedImage에 직사각형을 그리는 그리기 방법을 구현합니다.
  3. 새 직사각형을 그릴 때와 같이 필요한 경우에만 JPanel을 무효화하고 다시 칠합니다.
  4. 유지 반복 그리기를 피하기 위해 그려진 직사각형 목록.

예:

<code class="java">// Relevant JPanel subclass
class MyPanel extends JPanel {

    private BufferedImage canvasImage; // Image for drawing rectangles

    // Draw a rectangle
    public void drawRect(int x, int y, int width, int height) {
        Graphics2D g = canvasImage.createGraphics();
        g.setColor(Color.RED);
        g.fillRect(x, y, width, height);
        g.dispose();
        repaint(); // Redraw the panel with updated canvasImage
    }

    // Update view
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage on the panel
    }
}</code>

장점:

  • 사각형은 이후 다시 칠할 때 사라지지 않고 계속 표시됩니다.
  • 그리기 및 다시 칠하기 작업이 최적화되어 성능 지연이 사라집니다.

위 내용은 성능 저하 없이 JPanel에서 영구 직사각형을 그리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.