Q&A

  • 폼 크리어는?
마우스로 그림 그리기 프로그램을 했는데요.

버튼을 누르면 그림 그려진걸 모두 지우려면 어떻게 하나요?

급함...!!!

4  COMMENTS
  • Profile
    최용일 2000.02.21 20:55
    hjcho wrote:

    > 마우스로 그림 그리기 프로그램을 했는데요.

    > 버튼을 누르면 그림 그려진걸 모두 지우려면 어떻게 하나요?

    > 급함...!!!



    FillRect함수를 쓰면됩니다.

    브러쉬의 색을 바꾸면 원하는 색상으로 지울수 있습니다.

    example)



    procedure Form1.ClearCanvas;

    var

    R: TRect;

    begin

    with Canvas do

    Brush.Style := bsSolid;

    Brush.Color := clWhite; // 지우고 싶은 색깔을 여기에 넣는다...

    GetWindowRect(Handle, R);

    R.TopLeft := ScreenToClient(R.TopLeft);

    R.BottomRight := ScreenToClient(R.BottomRight);

    FillRect(R);

    end;

    end;

  • Profile
    hjcho 2000.02.22 01:11
    최용일 wrote:

    > hjcho wrote:

    > > 마우스로 그림 그리기 프로그램을 했는데요.

    > > 버튼을 누르면 그림 그려진걸 모두 지우려면 어떻게 하나요?

    > > 급함...!!!

    >

    > FillRect함수를 쓰면됩니다.

    > 브러쉬의 색을 바꾸면 원하는 색상으로 지울수 있습니다.

    > example)

    >

    > procedure Form1.ClearCanvas;

    > var

    > R: TRect;

    > begin

    > with Canvas do

    > Brush.Style := bsSolid;

    > Brush.Color := clWhite; // 지우고 싶은 색깔을 여기에 넣는다...

    > GetWindowRect(Handle, R);

    > R.TopLeft := ScreenToClient(R.TopLeft);

    > R.BottomRight := ScreenToClient(R.BottomRight);

    > FillRect(R);

    > end;

    > end;



    incompatible types: 'HDC' and 'TRect'에러가 뜨는데요..

    죄송하지만 뭔소린지 답변 부탁드려요....



  • Profile
    최용일 2000.02.22 04:02
    아까의 프로시저는 제가 테스트해 보았는데 디버깅 섹션에서만 화면이

    클리어되는 것을 볼 수 있습니다. 이것이 버그인지는 잘 모르겠지만...



    이렇게 해보세요..(이건 제가 직접 테스트해보고 올리는겁니다...)

    먼저 TImage클래스를 폼상에 올려놓고 Align속성을 alClient로 만듭니다..

    그런후 다음 프로시저를 호출하시면 원하시는 결과를 얻을수 있습니다..



    procedure TForm1.ClearCanvas;

    var

    R: TRect;

    begin

    with image1.Canvas do

    begin

    Brush.Style := bsSolid;

    Brush.Color := clblack; // 지우고 싶은 색깔을 여기에 넣는다...

    GetWindowRect(Canvas.Handle, R);

    FillRect(R);

    end;

    end;







  • Profile
    최용일 2000.02.22 03:07
    아마도 uses절에 Windows가 Graphics보다 더 먼저있어서 Windows유닛의

    FillRect를 참조하나 봅니다...

    Canvas.FillRect(R) <==== 이렇게 하시면 됩니다...