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
[18118] Re:pmNotXor를 이용해 이미지에 라인을 그리려면...???
Falco [falco] 1234 읽음    2002-05-02 20:26
다음을
Private: 에 선언을 하시구요.
TPoint FirstPoint;  // 최초 위치 백업
TPoint LastPoint;   // 현재 위치 백업
bool Dragging;      // 드래그 중 판별

이렇게 해서 Pen Mode 를 다른걸로 바꿔 가면서 해 보세요.
그리고 이렇게 그린 그림을 창이 다른 창에 가려졌다가 나오면서 다 지워집니다.
지워지지 않고(정확하게는 다시 그리는) 하는 방법은 스스로 구현하셔야 하겠네요.


void __fastcall TForm1::FormShow(TObject *Sender)
{
    // 노란색 라인을 긋겠다.
    Canvas->Pen->Color = clYellow;
    // 선의 굵기 설정
    Canvas->Pen->Width = 2;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseDown(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;
        // 최초 위치로 펜의 위치를 옮긴다.
        Canvas->MoveTo(X, Y);
        // 드래그 할 준비 완료
        Dragging = true;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    // 드래그 중이었으면 이전에 그린 그림을 영구적으로 그린다.
    if (Dragging)
    {
        Canvas->Pen->Mode = pmCopy;
        Canvas->MoveTo(FirstPoint.x, FirstPoint.y);
        Canvas->LineTo(X, Y);
    }
    // 드래그를 종료한다.
    Dragging = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
    // 드래그 중이면 마우스 가는데로 그림을 그린다.
    if (Dragging && Shift.Contains(ssLeft))
    {
        // 펜의 모드를 결정한다.
        Canvas->Pen->Mode = pmNot;
        // 이전에 그린 임시 라인을 삭제한다.
        Canvas->MoveTo(FirstPoint.x, FirstPoint.y);
        Canvas->LineTo(LastPoint.x, LastPoint.y);
        // 새로 임시 라인을 그린다.
        Canvas->MoveTo(FirstPoint.x, FirstPoint.y);
        Canvas->LineTo(X, Y);
        // 현재 지점을 백업한다.
        LastPoint.x = X;
        LastPoint.y = Y;
    }
}
//---------------------------------------------------------------------------


^^* 님이 쓰신 글 :
: 안냐세영...
: 이미지에다가 선을 그릴라구 하는대영...
: 이미지 캔바스에 펜모드를 pmNotXor루 놓구 선그리기를 하믄 선이 따라다닌다구 하는디...
: 제대루 안대네영...
: 예제 가틍거 헉시 있으신분~~
: 부탁 드림다...

+ -

관련 글 리스트
18104 pmNotXor를 이용해 이미지에 라인을 그리려면...??? ^^* 897 2002/05/02
18118     Re:pmNotXor를 이용해 이미지에 라인을 그리려면...??? Falco 1234 2002/05/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.