c# 더블 버퍼링 예제

다음으로 코드는 비트맵과 연결된 그래픽 개체를 만들고 DrawButterfly 메서드를 호출하여 나비 곡선을 그립니다. 첫 번째 PictureBox의 이미지 속성을 비트맵으로 설정하고 새로 고칩니다. 이 예제에서는 간단한 깜박임이 표시됩니다. PictureBox를 지우지 않으면 아무 것도 알 수 없습니다. 이 기술은 .NET Framework 1.1과 함께 제공되며 몇 가지 이중 버퍼 지원을 제공합니다. 내가 테스트 한 것에서이 기술은 별로 좋지 않으며 .NET Framework 1.1 (나중에 설명 될 예정)에 대한 수동 기술을 사용하는 것을 선호합니다. DrawButterfly 메서드는 전달된 그래픽에 나비 곡선을 그리기만 하면 됩니다. 예제를 다운로드하고 이전 예제를 참조하여 작동 방식을 알아봅니다. 나는 이것이 오래되었지만, 이것은 너무 훌륭하다는 것을 알고 있다. 내 응용 프로그램에서, 나는 어쨌든 버퍼링 이중으로 설정할 수 없습니다 – 그것은 검은 색으로 그려질 일이 발생하지만, 비트 맵에 그리기로, 전체 깜박임 문제는 사라! 업데이트 : 방금 컨트롤에 그리는 많은 상황에서 이중 버퍼링을 자동화하는 Control.SetStyle 메서드가 있음을 발견했습니다 .

여러 레이어: 다음 코드에 표시된 DrawCurves 메서드는 이 예제의 두 개의 나비 곡선을 그립니다. 왼쪽의 PictureBox는 이중 버퍼링을 사용하지만 오른쪽에 있는 PictureBox는 버퍼링을 사용합니다. 여기서 는 이중 버퍼를 만들고 컨트롤의 OnPaint 이벤트 또는 사용할 수 있는 다른 작업을 재정의하여 구현합니다: C#에서 그림을 그릴 때 깜박임을 방지하기 위해 이중 버퍼링 사용 예제에서는 폼을 이중 b를 사용하는 방법을 보여 주며, 이 버퍼를 사용하는 방법을 보여 주며, 이 버퍼를 사용합니다. 깜박임을 줄이기 위해 uffering. 양식이 생성될 때 화면에 모든 것을 그리는 대신 메모리의 이미지에 그려지고 이미지가 완료될 때만 결과를 표시합니다. GDI + 기반 게임 / 컨트롤이 성가신 깜박이지 않도록 그래픽 개체로 버퍼를 두 배로 늘리는 방법을 궁금해 한 적이 있습니까? 저도요. 아마도 쉽게 내장 된 방법이 있지만, 이것은 내가 원활하게 작동할 수 있도록 관리하는 방법이며, 멋지고 간단하며 정상적인 CreateGraphics 메서드를 제공하는 아무 곳이나 그릴 수 있습니다. 이중 버퍼링은 그래픽 프로그래밍을 다룬 사람이라면 누구나 알아야 할 기술을 사용하기에 좋고 간단합니다. 또한 Microsoft가 .NET Framework의 GUI 성능을 향상시키기 위해 많은 시간을 할애하고 즉흥적인 코드를 작성하는 데 시간을 낭비하는 대신 처리 할 수있는 더 나은 도구를 제공한 것을 보게되어 기쁩니다. 그러나 전체 양식이 아닌 PictureBox를 두 번 버퍼링하려면 어떻게해야합니까? PictureBox 컨트롤에는 양식과 마찬가지로 DoubleBuffered 속성이 없습니다.

(아마도 그럴 수도 있지만.) 참고: 아래에 언급된 모든 기술은 .NET Framework 1.1의 첫 번째 기술 및 .NET Framework 2.0용을 제외한 이 문서에서 제공하는 예제 소스 코드에 사용됩니다. .NET Framework 2.0에서는 이중 버퍼링 기술의 용이성과 사용이 크게 향상되었습니다. 이 기술을 사용하여 얻는 성능은 매우 좋으며 코딩을 너무 많이 사용하지 않으려는 모든 사람들에게 이 것을 권장합니다.