> Java > java지도 시간 > 본문

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

Barbara Streisand
풀어 주다: 2024-10-30 05:24:02
원래의
299명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!