2009-05-18 13 views
1

개체 계층을 렌더링하는 동안 DashStyle.Dash을 사용하고 있습니다. 내 응용 프로그램은 Graphics.Transform을 광범위하게 사용하며 DashStyle.Dash으로 펜을 사용하는 경우 Graphics.DrawLine이 어떤 배율 값 (100 % 배율 포함) 및 일부 회전 각도에서 OutOfMemoryException을 던집니다. Google을 사용하여 이것이 well-knownproblem이라는 것을 알게되었습니다. Microsoft는 이것이 blockingissue이 아님을 알려줍니다. 지금까지이 문제에 대한 해결 방법을 찾지 못했습니다.GDI + DashStyle이 .NET에서 OutOfMemoryException을 throw합니다.

내 옵션에는 어떤 것이 있습니까?

+1

나는 펜을 버리는 사람이라고 생각하니? 언급 된 기사 중 하나는 Graphics.DrawLine * s *에서 중복되는 점을 피하기 위해서라고합니다. 단수 버전을 사용하고 있습니까? 몇 가지 코드를 게시 할 수 있습니다. 어쩌면 도움이 될 것입니다. –

+0

모든 GDI + 개체를 확실히 처분해야합니다. 내가하지 않았을 때 많은 문제가 있었고 그 중 하나는 메모리 부족 예외였습니다. – Sebastian

+0

또 다른 아이디어는 예를 들어 메모리 누수가있는 경우 프로파일 러를 사용하여 코드에서 어떤 일이 벌어지고 있는지 확인하고 해결 방법을 찾는 것입니다. – Sebastian

답변

1

방금 ​​같은 문제가 발생했습니다. 추가 조사에서 나는 다음을 발견했다.

  1. 줄 길이는 정확히 맞춤 대시 패턴 길이입니다. 라인 길이를 +/- 1 픽셀로 변경하면 오류가 발생하지 않습니다.
  2. 제가 LineCapSquareDashCapFlat로 전환 LineCapRoundDashCapRound을 사용 하였다는 오류 펜 폭은 제로였다
  3. (아마도 둥근 단부부터)의 경로를 병합하려고 온 오류
  4. 을 피했다.

마지막 해결책은 너비가 0 인 선을 그리지 않는 것입니다.

관련 문제