2010-05-27 32 views
2

어떻게 C#에서 WinForms의 표시 속도를 높일 수 있습니까?C#으로 WinForms의 디스플레이 속도를 어떻게 높일 수 있습니까?

이미로드 된 후 창을 '다시 활성화'(예 : 전환) 한 경우에도 양식이 매우 느리게 그려져 있음을 발견했습니다.

다른 언어는 렌더링 양식이 훨씬 빨라 보입니다.

속도를 높이는 방법이 있습니까? VS2005에서 C# 사용.

+1

UI 스레드에서 많은 처리 작업을 수행하고 있습니까? 메모리 굶주린 기계에 있습니까? 필자는 WinForms가 일반적으로 상당히 빠르게 페인트된다는 것을 알았습니다. –

+1

그림 속도는 WinForms 자체보다 UI 코드와 더 관련이 있습니다. UI 스레드에서 무엇을하고 있습니까? –

+0

처음에로드 할 때 데이터 검색이 일부 이루어 지지만 Windows에서 작업 표시 줄을 통해 응용 프로그램을 다시 활성화하면 GUI가 다시 그리는 것에 대해 느린 것으로 나타납니다. – CJ7

답변

0

백그라운드 작업자를 사용하여 백그라운드에서 데이터로드를 시도하십시오.

마지막으로 화면을 표시하는 스플래시 화면과로드중인 데이터를 사용하여 seemlikefastscreen을 비활성화하거나 복구 할 때까지 대기 아이콘을 표시 할 수 있습니다.

0

빠른 드로잉이 매우 중요한 요구 사항이라면 GDI + 대신 DirectX를 사용하는 것이 좋습니다. DirectX는 그래픽 카드의 CPU를 사용하기 때문에 매우 빠릅니다.

그러나 GDI +를 계속 사용하려면 비트 맵에서 모든 그림을 실행 한 다음 해당 비트 맵을 화면으로 전송하면 속도가 상당히 향상됩니다. 이렇게하려면 먼저 클라이언트 영역과 동일한 크기의 새 Bitmap 객체를 만듭니다. 그런 다음 Graphics.FromImage (yourbitmap)를 사용하여 비트 맵에 그래픽 핸들을 가져옵니다. 그런 다음 비트 맵에서 가져온 그래픽 핸들을 사용하여 일반적으로하는 것처럼 그리기를 수행하십시오. 마지막으로 DrawImage()를 사용하여 비트 맵을 양식으로 전송합니다.

+0

비트 맵에 대해 이야기하는 것이 아니라 GUI의 페인팅입니다. – CJ7

0

일부 주석을 읽은 후에는 Paint()를 재정의하거나 큰 비트 맵을 그리는 것으로 UI 스레드를 망치는 것처럼 보이지 않습니다. 당신은 많은 폼 컨트롤을 가지고 있다고 가정합니다. 나는이 컨트롤을 많이 사용함으로써 UI 반응성을 확실히 없앴습니다. 양식이 파도에서 업데이트되는 것 같습니다. 솔직히 말해서 폼의 수를 줄이거 나 UI 라이브러리를 바꾸지 않는 좋은 해결책을 찾지 못했습니다.

저는 $ 0.02USD를 버리고 WPF를 살펴볼 것을 제안합니다. 10 개 정도의 컨트롤이 포함 된 수십 개의 사용자 지정 컨트롤이있는 폼이 있고 UI가 단순히 움직입니다. WPF로 전환 할 수 있다면 기꺼이 할 수있을 것입니다. 이 포럼에 대한 많은 도움이 많이 있습니다. D

관련 문제