Q&A

  • 델고수님들 도와 주세요 작업을 못하고 있어요!!!!!
도와 주세요...

Canvas dons't 어쩌구 저쩌구.. 이런 메세지가 계속 나오구 있는데

방법이 없네요 원인도 모르겠구...

항상 나오는것도 아니구 가끔 튀어 나오면서 죽어 버려요



제가 하는거는 마우스를 따라 가면서 폼의 Canvas에 Line을 그리는 작업 입니다.





소스를 간추리면



var

myLine : TShape;



Form1.MouseMove....

begin

myLine.Draw(Point(x,y), Canvas);

end;



procedure TShape.Draw(drawPoint : TPoint; Canvas : TCanvas);

begin

Canvas.MoveTo......

Canvas.LineTo....

end;



간단히 적으면 위와 같은 형태입니다.

TShape은 제가 만든 Class이고

Move에서 TShape의 Draw Call 하고 인자로 Canvas를 넘겨 줍니다.

근데 처음에는 잘 됩니다..그러다 어떤 순간 Canvas dons't....이런 메세지가

나오고 있습니다...



왜 이런 메세지가 나오는지 모르겠습니다...

고수님들 부탁 합니다..





1  COMMENTS
  • Profile
    홍성락 2001.09.02 02:09
    안순규 wrote:

    > 도와 주세요...

    > Canvas dons't 어쩌구 저쩌구.. 이런 메세지가 계속 나오구 있는데

    > 방법이 없네요 원인도 모르겠구...

    > 항상 나오는것도 아니구 가끔 튀어 나오면서 죽어 버려요

    >

    > 제가 하는거는 마우스를 따라 가면서 폼의 Canvas에 Line을 그리는 작업 입니다.

    >

    >

    > 소스를 간추리면

    >

    > var

    > myLine : TShape;

    >

    > Form1.MouseMove....

    > begin

    > myLine.Draw(Point(x,y), Canvas);

    > end;

    >

    > procedure TShape.Draw(drawPoint : TPoint; Canvas : TCanvas);

    > begin

    > Canvas.MoveTo......

    > Canvas.LineTo....

    > end;

    >

    > 간단히 적으면 위와 같은 형태입니다.

    > TShape은 제가 만든 Class이고

    > Move에서 TShape의 Draw Call 하고 인자로 Canvas를 넘겨 줍니다.

    > 근데 처음에는 잘 됩니다..그러다 어떤 순간 Canvas dons't....이런 메세지가

    > 나오고 있습니다...

    >

    > 왜 이런 메세지가 나오는지 모르겠습니다...

    > 고수님들 부탁 합니다..

    >

    ////////////////////////////////////////////

    새로 만드신 TShape에 Draw를 넣으신것 같은데요, 만드신 내용은 잘은 모르겠으나

    예전에 저의 경험으로봐서 몇가지 확인을해보시면 될것같거든요.



    1.TShape에 자체 Draw가 화면변환시 실행될수있도록 만드어질 경우도 있으나

    TShape자체에 Canvas라는것을 안만든경우가 있으므로 Draw함수에

    procedure TShape.Draw(drawPoint : TPoint; SCanvas : TCanvas);

    begin

    if SCanvas <> nil then begin

    SCanvas.MoveTo......

    SCanvas.LineTo....

    end;

    end;



    2.변수명 선택시 Canvas는 디폴트로 해당 오브젝트의 Canvas도되거든요.

    3.Form1.MouseMove....에서사용한 Canvas가 Form1꺼로 되어있으므로 누구껀지요.