Tuesday, July 2, 2013

[C#] Graphics

Graphics 객체 초기화에 문제가 생김.

parameter가 invalid하다고 함.


코드를 다 뜯어봐도 임의로 Dispose하거나 null로 세팅하는 데는 없었음.




문제는 event handler였음.

MVC 패턴(?)을 내가 제대로 쓰지 못해서 그런 건지는 잘 모르겠는데,

아무튼 Redraw & Invalidate를 EventHandler로 넣으면 안 됨.


결국 수동으로 일일이 Redraw & Invalidate하니 잘 돌아감.

이런 샹.


코드:

class DataClass { // 데이터 내용을 고치면 Viewer에서 자동으로 인식
...

   void SetCoord(int x, int y) {
       this.X=x; this.Y=y;
       if(LocationChanged!=null)  // LocationChanged 이벤트 발생시킴.
           LocationChanged(this, null);   // 이 부분이 문제가 됐음.
   }
}

class Viewer {
     void AddData(DataClass dt) {
          dt.LocationChanged += RedrawAndInvalidate;
     }
}

그리기가 관련된 데서는 이벤트를 쓰면 안 될 거 같다;;;;;;

No comments:

Post a Comment

"Gossip Girl" star Michelle Trachtenberg dies at 39

미셸 트랙튼버그 하우스에서 심장 이식 받았던 환자로 나왔는데 현실에서는 간이식을 받았었구나 가십걸이나 버피더뱀파이어슬레이어 이제 정주행해 볼까... 블로그도 다시 살려 볼까 훠훠