이중 버퍼링 그래픽Double Buffered Graphics

깜박임은 그래픽을 프로그래밍할 때 일반적으로 발생하는 문제입니다.Flicker is a common problem when programming graphics. 여러 개의 복잡한 그리기 작업이 필요한 그래픽 작업에서 렌더링된 이미지가 깜박이거나 그렇지 않고 의도하지 않은 모양이 나타날 수 있습니다.Graphics operations that require multiple complex painting operations can cause the rendered images to appear to flicker or have an otherwise unacceptable appearance. 이러한 문제를 해결하기 위해 .NET Framework에서 이중 버퍼링에 대한 액세스를 제공합니다.To address these problems, the .NET Framework provides access to double buffering.

이중 버퍼링은 메모리 버퍼를 사용하여 여러 그리기 작업과 관련된 깜박임 문제를 해결합니다.Double buffering uses a memory buffer to address the flicker problems associated with multiple paint operations. 이중 버퍼링을 사용하면 모든 그리기 작업이 그리기 화면 대신 메모리 버퍼에 먼저 렌더링됩니다.When double buffering is enabled, all paint operations are first rendered to a memory buffer instead of the drawing surface on the screen. 모든 그리기 작업이 완료되면 메모리 버퍼가 연결된 그리기 화면에 직접 복사됩니다.After all paint operations are completed, the memory buffer is copied directly to the drawing surface associated with it. 하나의 그래픽 작업만 화면에서 수행되기 때문에 복잡한 그리기 작업과 관련된 이미지 깜빡임이 제거됩니다.Because only one graphics operation is performed on the screen, the image flickering associated with complex painting operations is eliminated.

기본 이중 버퍼링Default Double Buffering

애플리케이션에서 이중 버퍼링을 사용하는 가장 쉬운 방법은 .NET Framework에서 제공하는 양식과 컨트롤에 기본 이중 버퍼링을 사용하는 것입니다.The easiest way to use double buffering in your applications is to use the default double buffering for forms and controls that is provided by the .NET Framework. 기본 이중 버퍼링에 Windows Forms을 사용 하도록 설정할 수를 설정 하 여 작성 된 Windows 컨트롤을 DoubleBuffered 속성을 true 또는 사용 하 여를 SetStyle 메서드.You can enable default double buffering for your Windows Forms and authored Windows controls by setting the DoubleBuffered property to true or by using the SetStyle method. 자세한 내용은 방법: 폼 및 컨트롤에 이중 버퍼링 사용 하 여 그래픽 깜빡임 줄이기합니다.For more information, see How to: Reduce Graphics Flicker with Double Buffering for Forms and Controls.

버퍼링된 그래픽 수동 관리Manually Managing Buffered Graphics

애니메이션 또는 고급 메모리 관리와 같은 고급 이중 버퍼링 시나리오에서는 .NET Framework 클래스를 사용하여 사용자 고유의 이중 버퍼링 논리를 구현할 수 있습니다.For more advanced double buffering scenarios, such as animation or advanced memory management, you can use the .NET Framework classes to implement your own double-buffering logic. 클래스가 할당 하 고 개별 그래픽 버퍼를 관리 하는 일을 담당 합니다 BufferedGraphicsContext 클래스입니다.The class responsible for allocating and managing individual graphics buffers is the BufferedGraphicsContext class. 모든 응용 프로그램 도메인에는 자체 기본 BufferedGraphicsContext 모든 기본 이중 버퍼링 해당 응용 프로그램을 관리 하는 인스턴스.Every application domain has its own default BufferedGraphicsContext instance that manages all of the default double buffering for that application. 대부분의 경우에 표시 됩니다 응용 프로그램당 응용 프로그램 도메인이 하나만 이므로 일반적으로 하나의 기본 BufferedGraphicsContext 응용 프로그램당 합니다.In most cases there will be only one application domain per application, so there is generally one default BufferedGraphicsContext per application. 기본 BufferedGraphicsContext 인스턴스는 관리 되는 BufferedGraphicsManager 클래스입니다.Default BufferedGraphicsContext instances are managed by the BufferedGraphicsManager class. 기본값에 대 한 참조를 검색할 수 있습니다 BufferedGraphicsContext 를 호출 하 여 인스턴스를 Current입니다.You can retrieve a reference to the default BufferedGraphicsContext instance by calling the Current. 전용 만들 수도 있습니다 BufferedGraphicsContext 그래픽 위주 응용 프로그램에 대 한 성능을 향상 시킬 수 있는 경우.You can also create a dedicated BufferedGraphicsContext instance, which can improve performance for graphically intensive applications. 만드는 방법에 대 한 정보에 대 한는 BufferedGraphicsContext 인스턴스를 참조 하십시오 방법: 버퍼링 된 그래픽 수동 관리합니다.For information on how to create a BufferedGraphicsContext instance, see How to: Manually Manage Buffered Graphics.

버퍼링된 그래픽 수동 표시Manually Displaying Buffered Graphics

인스턴스를 사용할 수는 BufferedGraphicsContext 를 호출 하 여 그래픽 버퍼를 만들 클래스를 BufferedGraphicsContext.Allocate의 인스턴스를 반환 하는 BufferedGraphics 클래스.You can use an instance of the BufferedGraphicsContext class to create graphics buffers by calling the BufferedGraphicsContext.Allocate, which returns an instance of the BufferedGraphics class. BufferedGraphics 개체는 양식이 나 컨트롤 같은 렌더링 화면과 연관 된 메모리 버퍼를 관리 합니다.A BufferedGraphics object manages a memory buffer that is associated with a rendering surface, such as a form or control.

인스턴스화된 후는 BufferedGraphics 클래스는 메모리 내 그래픽 버퍼에 렌더링을 관리 합니다.After it is instantiated, the BufferedGraphics class manages rendering to an in-memory graphics buffer. 통해 메모리 버퍼에 그래픽을 렌더링할 수 있습니다 합니다 Graphics를 노출 하는 Graphics 직접 메모리 버퍼를 나타내는 개체입니다.You can render graphics to the memory buffer through the Graphics, which exposes a Graphics object that directly represents the memory buffer. 이에 그릴 수 있습니다 Graphics 하는 것 처럼 개체를 Graphics 그리기 화면을 나타내는 개체입니다.You can paint to this Graphics object just as you would to a Graphics object that represents a drawing surface. 모든 그래픽 버퍼에 그려진 후 사용할 수 있습니다는 BufferedGraphics.Render 화면에서 그리기 화면 버퍼의 내용을 복사 합니다.After all the graphics have been drawn to the buffer, you can use the BufferedGraphics.Render to copy the contents of the buffer to the drawing surface on the screen.

사용 하 여 대 한 자세한 내용은 합니다 BufferedGraphics 클래스를 참조 하십시오 버퍼링 된 그래픽 수동 렌더링합니다.For more information on using the BufferedGraphics class, see Manually Rendering Buffered Graphics. 그래픽 렌더링에 대한 자세한 내용은 Windows Forms의 그래픽 및 그리기를 참조하세요.For more information on rendering graphics, see Graphics and Drawing in Windows Forms

참고자료See also