본문 바로가기
C#/Winform

[winform] 화면 깜빡임 처리 ( DoubleBuffer 적용이 되지 않을 경우 )

by 바구일 2021. 6. 9.

[winform] 화면 깜빡임 처리 (DoubleBuffer 적용이 되지 않을 경우

 

winform 어플리케이션을 만들던중 일정 주기로 데이터를 갱신하고 panel 안에 동적으로 갱신된 데이터 수만큼 컨트롤을 추가하는 상황이 있었다.

 

데이터 갱신때마다 컨트롤을 그려내는 과정에서 화면이 깜빡거리면서 출력되었고 해당 Form에 DoubleBuffer속성을 True로 변경해도 같은 현상이 나타났다.

 

해결법은 아래 코드처럼 상속받은 CreateParmas 메서드를 재정의 하는 것이다

 

public partial class TestForm : Form
{
    public TestForm()
    {
        InitializeComponent();
    }
    
    protected override CreateParmas CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle != 0x02000000;
            return cp;
        }
    }
}

 

CreateParams의 ExStyle 속성은 컨트롤에 적용할 초기 상태값을 설정할 수 있다.

0x020000000값은 Form의 모든 하위항목에 이중버퍼링을 설정하는 상수값인데 이 값을 설정해 모든 하위항목에 이중버퍼링을 적용시켜 깜빡임 없이 컨트롤을 그려낸다.

 

다른 샘플 상수값들을 더 알아보고 싶다면 이 링크를 참고해보는것도 좋을것 같다.

 


참고자료

https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.forms.createparams?view=net-5.0

댓글