자바 더블버퍼링 예제

화면 표면은 일반적으로 기본 표면이라고 하며 이중 버퍼링에 사용되는 오프스크린 이미지를 일반적으로 백 버퍼라고 합니다. 한 표면에서 다른 표면으로 내용을 복사하는 행위는 종종 블록 라인 전송 또는 blitting (blt는 일반적으로 “blit”로 발음되며 BLT 샌드위치와 혼동해서는 안됩니다)라고합니다. 이중 버퍼링은 그래픽을 화면 외부 이미지 버퍼로 그린 다음 버퍼의 내용을 한 번에 화면에 복사하는 프로세스입니다. 복잡한 그래픽의 경우 이중 버퍼링을 사용하면 깜박임을 줄일 수 있습니다. 스윙은 모든 구성 요소에 대해 이중 버퍼링을 자동으로 지원합니다. 이를 사용하려면 setDoubleBuffered(JComponent에서 상속) 메서드를 호출하여 이중 버퍼링 된 도면을 사용해야하는 모든 구성 요소에 대해 doubleBuffered 속성을 true로 설정하십시오. 기본 표면은 일반적으로 표시 구성 요소의 그래픽 개체를 통해 조작됩니다. 전체 화면 모드에서는 전체 화면 창의 그래픽을 사용하는 모든 작업이 화면 메모리를 직접 조작합니다. 따라서 창 시스템의 오버헤드로 인해 사용할 수 없는 전체 화면 전용 모드에서 다른 기능을 활용할 수 있습니다.

전체 화면 전용 모드에서만 사용할 수 있는 이러한 기술 중 하나는 페이지 뒤집기라는 이중 버퍼링의 한 형태입니다. 좋은 이중 버퍼링에 항상 필요합니다. 이렇게 하면 애플릿이 먼저 // 이전 도면을 닦지 않고 즉시 다시 칠하게 됩니다. 또한 지우기는 깜박임을 유발합니다. 다시 그리기()가 호출될 때 업데이트가 자동으로 호출됩니다. Java 응용 프로그램에서 이중 버퍼링이라는 기존의 개념은 매우 간단합니다: 오프스크린 이미지를 만들고 이미지의 그래픽 개체를 사용하여 해당 이미지로 그린 다음 한 단계에서 대상 창의 그래픽 개체를 사용하여 drawImage를 호출합니다. 오프스크린 이미지. 스윙은 이미 setDoubleBuffered 메서드를 사용하여 기본적으로 활성화된 많은 구성 요소에서 이 기술을 사용한다는 것을 이미 알아차렸을 수 있습니다. 그럼이 모든 이론 후 나는 우리의 “공 이동”애플릿에 이중 버퍼링을 통합하는 방법을 보여줍니다 (기본 코드로 전에 장의 애플릿을 사용!):이 솔루션은 뭔가가 변경 된 우리의 애플릿의 단지 그 부분을 다시 칠하는 아이디어를 기반으로합니다. 이 개념은 스나신과 같은 게임에 매우 좋습니다.