C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[57698] 장성호님 이것좀 봐주세요
왕초보 [] 1079 읽음    2009-07-22 13:03
폼 >  panel  > 이미지 위에  아래 배경은 보인 상태에서 사각 라인만을 그립니다.
이미지 중 일부분을 사각형으로 취하는 프로그램을 만들려고 합니다.
잘못 선택한 부분은 다시 마우스로 선택하여 이미지 사각형을 다시 만들려고 합니다.

1. 마우스로   라인을 그려서 사각형을 그립니다.

2. 다시 마우스로 라인을 그리면 기존 사각형은 사라지고
    현재 다시 그린 사각형만  이미지 위에 존재 합니다.



헤더
//1.마우스 드래그 rectangle
  TPoint FirstPoint;  //초기점
  TPoint LastPoint;  //현재위치
  bool   Dragging;

이미지 마우스 다운
void __fastcall TForm3::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
              if (Shift.Contains(ssLeft)) //좌측마우스가 눌렸을 경
              {
                FirstPoint.x = X;
                FirstPoint.y = Y;
                LastPoint.x = X;
                LastPoint.y = Y;
                Image1->Canvas->MoveTo(X, Y);
                Dragging = true;
              }
}

void __fastcall TForm3::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
    if (Dragging && Shift.Contains(ssLeft)) {
        Image1->Canvas->Pen->Mode = pmNotXor;
        Image1->Canvas->Brush->Style = bsClear;
        Image1->Canvas->Rectangle(FirstPoint.x,FirstPoint.y,LastPoint.x,LastPoint.y);

        Image1->Canvas->Rectangle(FirstPoint.x,FirstPoint.y,X,Y);

        LastPoint.x = X;
        LastPoint.y = Y;
    }
}

void __fastcall TForm3::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{

   Image1->Canvas->Pen->Color = clBlue;
   Image1->Canvas->Pen->Width = 4;

      if (Dragging)
    {
           Image1->Canvas->Pen->Mode = pmCopy;
           Image1->Canvas->Rectangle(FirstPoint.x,FirstPoint.y,X,Y);
    }
    Dragging = false;
}





위의 소스에서 장성호님이 알려주신 대로 하면  각이벤트에 넣어 봤지만  지워지지 않습니다.




장성호 님이 쓰신 글 :
: 기존 그림을 전체 삭제 하려면?
:
: 삭제한다기 보다
: 흰색으로 전체에 사각형을 그리면 되죠
:
:
: Image1->Canvas->Brush->Color=clWhite;
: Image1->Canvas->Brush->Style=bsSolid;
: Image1->Canvas->Pen->Color=clWhite;
: Image1->Canvas->Pen->Style=psSolid;
: Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
: 
: //Bursh나 Pen의  Color나 Style을 원하는 대로 바꿔서...
: Image1->Canvas->Rectangle(sqrPoint[0].x, sqrPoint[0].y, sqrPoint[1].x,sqrPoint[1].y);
: 
: 
: 

:
:
: 그럼..
:
:
:
:
:
: 왕초보 님이 쓰신 글 :
: : 폼에 이미지를 올려놓고
: :
: : 이미지 위에 사각형 그림을 그릴려고 합니다.
: : Image1->Canvas->Rectangle(sqrPoint[0].x, sqrPoint[0].y, sqrPoint[1].x,sqrPoint[1].y);
: :
: : 문제는
: : 먼저 있는 그림은 지우고
: : 다시 그리려고 하는데
: :
: : 마우스 드래그가 끝난후 up 할때 기존 내용 지우고 지금것으로 업데이트 하고 싶습니다.
: :
: : 마우스로 그림은 그려지는데 기존것을 어떻게 지워야 하는지 모르겠습니다.

+ -

관련 글 리스트
57694 이미지 Canvs 위에 사각형을 다시 그릴때 지우고 다시 그릴려면 왕초보 917 2009/07/22
57695     Re:이미지 Canvs 위에 사각형을 다시 그릴때 지우고 다시 그릴려면 장성호 1163 2009/07/22
57698         장성호님 이것좀 봐주세요 왕초보 1079 2009/07/22
57699             Re:장성호님 이것좀 봐주세요 장성호 1154 2009/07/22
57711                 고맙습니다. 왕초보 1036 2009/07/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.