이중 버퍼링 그래픽

깜박임은 그래픽을 프로그래밍할 때 일반적으로 발생하는 문제입니다. 여러 개의 복잡한 그리기 작업이 필요한 그래픽 작업에서 렌더링된 이미지가 깜박이거나 그렇지 않고 의도하지 않은 모양이 나타날 수 있습니다. 이러한 문제를 해결하기 위해 .NET Framework에서 이중 버퍼링에 대한 액세스를 제공합니다.

이중 버퍼링은 메모리 버퍼를 사용하여 여러 그리기 작업과 관련된 깜박임 문제를 해결합니다. 이중 버퍼링을 사용하면 모든 그리기 작업이 그리기 화면 대신 메모리 버퍼에 먼저 렌더링됩니다. 모든 그리기 작업이 완료되면 메모리 버퍼가 연결된 그리기 화면에 직접 복사됩니다. 하나의 그래픽 작업만 화면에서 수행되기 때문에 복잡한 그리기 작업과 관련된 이미지 깜빡임이 제거됩니다.

기본 이중 버퍼링

애플리케이션에서 이중 버퍼링을 사용하는 가장 쉬운 방법은 .NET Framework에서 제공하는 양식과 컨트롤에 기본 이중 버퍼링을 사용하는 것입니다. DoubleBuffered 속성을 true로 설정하거나 SetStyle 메서드를 사용하여 Windows Forms 및 작성된 Windows 컨트롤에 대해 기본 이중 버퍼링을 활성화할 수 있습니다. 자세한 내용은 방법: 양식과 컨트롤에 이중 버퍼링을 사용하여 그래픽 깜빡임 줄이기를 참조하세요.

버퍼링된 그래픽 수동 관리

애니메이션 또는 고급 메모리 관리와 같은 고급 이중 버퍼링 시나리오에서는 .NET Framework 클래스를 사용하여 사용자 고유의 이중 버퍼링 논리를 구현할 수 있습니다. 개별 그래픽 버퍼를 할당하고 관리하는 클래스는 BufferedGraphicsContext 클래스입니다. 모든 애플리케이션 도메인에는 해당 애플리케이션에 대한 모든 기본 이중 버퍼링을 관리하는 자체 기본 BufferedGraphicsContext 인스턴스가 있습니다. 대부분의 경우 애플리케이션마다 애플리케이션 도메인이 하나만 있으므로 일반적으로 애플리케이션당 하나의 기본 BufferedGraphicsContext가 있습니다. 기본 BufferedGraphicsContext 인스턴스는 BufferedGraphicsManager 클래스에서 관리됩니다. Current를 호출하여 기본 BufferedGraphicsContext 인스턴스에 대한 참조를 검색할 수 있습니다. 또한 전용 BufferedGraphicsContext 인스턴스를 만들어 그래픽 위주 애플리케이션의 성능을 향상시킬 수도 있습니다. BufferedGraphicsContext 인스턴스를 만드는 방법에 대한 자세한 내용은 방법: 버퍼링된 그래픽 수동 관리를 참조하세요.

버퍼링된 그래픽 수동 표시

BufferedGraphics 클래스의 인스턴스를 반환하는 BufferedGraphicsContext.Allocate를 호출하여 BufferedGraphicsContext 클래스의 인스턴스를 사용하여 그래픽 버퍼를 생성할 수 있습니다. BufferedGraphics 개체는 양식이나 컨트롤과 같은 렌더링 화면과 연결된 메모리 버퍼를 관리합니다.

인스턴스화되면 BufferedGraphics 클래스에서 메모리 내 그래픽 버퍼에 대한 렌더링을 관리합니다. 메모리 버퍼를 직접 나타내는 Graphics 개체를 노출하는 Graphics를 통해 메모리 버퍼에 그래픽을 렌더링할 수 있습니다. 그리기 표면을 나타내는 Graphics 개체에 그리는 것처럼 이 Graphics 개체에 그릴 수 있습니다. 모든 그래픽을 버퍼에 그렸으면 BufferedGraphics.Render를 사용하여 버퍼의 내용을 그리기 화면에 복사할 수 있습니다.

BufferedGraphics 클래스 사용에 대한 자세한 내용은 버퍼링된 그래픽 수동 렌더링을 참조하세요. 그래픽 렌더링에 대한 자세한 내용은 Windows Forms의 그래픽 및 그리기를 참조하세요.

참고 항목