2014-04-25 7 views
1

나는 작업중인 편집자를위한 드로잉 코드를 가지고있다. 몇 줄의 선과 이미지 버퍼를 그립니다. 확대 기능을 추가 한 후 ScaleTransform으로 전화하면 내 페인트 방법에 OverflowException이 표시됩니다.Graphics.ScaleTransform을 사용할 때 왜 OverflowException이 발생합니까?

는 무엇인가 범위를 벗어난 확장되고 있습니까? 나의 스케일링 팩터는 2.0이고 나는 심지어 1.0을 시도하고 모든 창 크기/버퍼가 충분히 큰지 확인했다.

답변

0

Graphics.Transform 속성은 단위 행렬로 초기화되지 않는다. 아니,

g.Tranfsorm = new Matrix(); 
g.ScaleTransform(2.0, 2.0); 

가 오버플 그렇지 않으면 몇 지수 후에

+0

흠 (내 응용 프로그램에서 초당 60 개 프레임이 순간 것 같다) : 당신은 당신의 paint 메소드의 시작 부분에이 자신을해야 할 근본적인 문제는 Paint 이벤트를 사용하는 대신 CreateGraphics()를 사용한다는 것입니다. 따라서 작업이 끝나면 올바르게 복원해야합니다. 대신 Save() 및 Restore() 메서드를 사용하십시오. CreateGraphics를 사용하는 것은 거의 불가능하지만 60fps에서 괜찮습니다. –

+0

'CreateGraphics'를 사용하지 않아서 틀렸어. :) –