불규칙한 격자에 많은 수의 작은 문자열을 표시하는 C# Windows Forms 응용 프로그램의 텍스트 렌더링을 최적화해야합니다. 언제든지 초당 4 번 업데이트 할 수있는 5000 개 이상의 셀이 표시 될 수 있습니다. 폰트 패밀리와 크기는 셀간에 일관성이 있지만 색상은 셀마다 다를 수 있습니다 (굵게/기울임 꼴/일반).Windows Forms에서 텍스트를 렌더링하는 가장 빠른 API는 무엇입니까?
내가있는 TextRenderer.DrawText
대 Graphics.DrawString
에 대해 웹에서 정보를 충돌 본 적이 가장 빠른/최고에, Win32 수준에서 GDI 대 GDI+ 비교를 줄일 수있다.
나는 Windows XP와 Windows Vista에서 근본적으로 다른 결과를 보았지만 주요 목표는 Windows XP입니다. 위대한 진보를 약속하는 기사 아래의 WinFX 및 DirectX 10은 여기에 도움이되지 않습니다 :-)
가장 좋은 방법은 무엇입니까? 나는 작은 C++/CLI 레이어를 도입하고 더 나은 성능을 끌어 내기 위해 장치 컨텍스트 처리를 최적화하는 것을 두려워하지 않지만 어떤 방향으로 나아갈 지에 대한 확실한 조언을 원합니다.
편집 : 초기 답변을 보내 주셔서 감사합니다. 나는 배경 비트 맵 렌더링과 GDI 동등한 호출을 고수하려고 노력할 것입니다.
블로그 링크의 샘플 앱은 Vista와 XP의 큰 차이점을 보았을 때 사용했던 도구입니다. Vista PC, GDI 및 GDI +는 동일하지만 XP에서는 저자가 언급 한 6x의 차이를 볼 수 있습니다. 이것은 아마 비스타 드라이버 문제이지만, 여기에 몇 가지 어려움을 강조 표시합니다 - 감사합니다! –
기록 참고 사항 : ExtTextOut는 가장 빠른 방법으로 일부 카드/드라이버에서 단색 사각형을 그리는 데 사용되었습니다. –