2010-02-12 4 views
1

winforms 응용 프로그램이 매우 고르지 않게 렌더링됩니다. 화면에서 양식을 그리거나 레이아웃이 처리 될 때까지 숨길 수있는 기법이 있습니까? 내 양식의 시각적 부하를 빠르게하는 데 도움이되는 모든 것.winforms 컨트롤이 더 부드럽게 렌더링됩니다.

도움 주셔서 감사합니다.

편집 :

양식은 부부가 각각의 그리드가 있고, 약 20 - 30 추가 컨트롤 (텍스트 상자/체크 박스). 모든 컨트롤은 제 3 자이며 사용자 정의 그림을 직접 사용하지 않습니다.

+0

양식 (얼마나 많은 컨트롤) 어떻게 무거운를? 어떤 그림을하고 있니? 모든 사용자 정의 컨트롤? 폼이나 컨트롤의 Load 또는 Init 이벤트에서 처리되는 양은 어느 정도입니까? –

+0

몇 개의 이미지가 있습니까? 얼마나 많은 이들이 크기가 조정됩니까? UserControls에 DoubleBuffered 속성을 사용합니까? 얼마나 렌더링하는데 시간이 걸립니까? 양식에 몇 개의 컨트롤이 있습니까? –

답변

7

양식에 컨트롤이 너무 많아지고 있습니다. 각 컨트롤이 차례 회화 자체를 사용하는 것을 볼 수 있습니다. 이중 버퍼링으로는이 문제를 해결할 수 없으며 모든 제어 창이있는 전체 양식을 이중 버퍼링해야합니다. XP 이후 가능합니다. WS_EX_COMPOSITED 창 스타일 플래그를 지원합니다. 페인팅 속도는 향상되지 않지만 모든 렌더링이 완료 될 때까지 화면이 업데이트되지 않습니다.

은 수 있도록 양식에이 코드를 붙여 넣습니다

protected override CreateParams CreateParams { 
    get { 
    CreateParams cp = base.CreateParams; 
    cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 
    return cp; 
    } 
} 
+0

이것은 검은 마법입니다. 고마워, 지금 이걸 사용하고있어. – user112799

관련 문제