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
[48630] Re:Re:Re:간단한 그림판을 제작중입니다.
장성호 [nasilso] 1475 읽음    2007-03-29 00:44
1번 답변을 빠뜨렸네요...

방법

    XOR로 MOVE때 그려주는 겁니다.

    1)  말로 풀어설명하면
    현재 Canvas의 특정 pixel 이  RGB  값으로  (A,B,C)이다면
    이 pixel 에 XOR로 한번그려주면.... 두값의 댓구의 색상으로 바뀔것이고
    또한번더 그려주면   원래 (A,B,C)색상으로 돌아가지요

   2)
   char  cA , cB;  
   char cC , cD;

   cB = aA^cC;
   cD = cB^cC;

   if( cA == cD )
   {
        ShowMessage("원래대로 돌아왔네...");
  }
  else  
  {
           ShowMessage("이상하네...");
  }

  3) 정리하면 (선을 그린다고 가정하고)
       *  MouseDown 때  시작좌표를 저장해 둡니다.   (x1,y1)
       *  MouseMove 때  좌표를 (x2,y2)에 잡고
              -  두점   (x1,y1 )   (x2,y2)   에 xor로 선을 그립니다.
       *  그 다음 MouseMove 때
              -  저정해둔 두점   (x1,y1 )   (x2,y2)   에 xor로 선을 그립니다.
              -  현재 움직이는 mouse좌표 x,y를   (  x2,y2)  에 저장합니다.
              -  그런다음 마지막으로  다시 두점   (x1,y1 )   (x2,y2)   에 xor로 선을 그립니다.
      *   Mouse Up때 (움직이는 선을 xor 로 지우고   copy 모드로 선을 그린다.)
             -  먼저 저정해둔 두점   (x1,y1 )   (x2,y2)   에 xor로 선을 그려 이전에 움직이던 선을 지웁니다.
             - 그런다음 현재점 (X,Y) 과 (x1,y1)사이에서 선을 copy모드로 그려줍니다.


   ---------------------------------------------------------------
선이아니라 사각형 원형도 같은방법으로 하시면 됩니다.
도형은 마우스 move때  Brush->Style=bsClear 로 해주구요
                                 
xor 와 copy모드 라는 말은  Pen->Mode를 의미합니다.

그럼






  


   

권종익 님이 쓰신 글 :
: 감사합니다. 2번문제는 그걸로 바로 해결이 되네요;;;
:
: 그런데 1번 문제는 어떻게 해결하는지 모르시나요?
:
: 그리고 free-drawing 할 때 마다 화면이 깜빡깜빡 거립니다. 이건 또 왜 그런지 알고계신분 정보 부탁드립니다.
:
: 장성호 님이 쓰신 글 :
: : Brush->Style을  어떻게 해주냐에 달려있습니다.
: :
: : Brush->Style = bsClear 로 해주면 가운데는 투명하게 되겠죠
: :                         bsSolid로 해주면  다 채워지게 되구요...
: :
: : 그럼
: :
: :
: :
: : 권종익 님이 쓰신 글 :
: : : 안녕하세요
: : :
: : : 아주 간단한 그림판을 제작중입니다.
: : :
: : : 일반 선과, 직선, 직사각형, 정사각형, 원, 타원을 그릴 수 있는 그림판을 만들고 있는 중인데요,
: : :
: : : 기본적으로 이것들을 모두 그릴수는 있도록 구현을 하였습니다.
: : :
: : : 그런데 지금 두가지 추가로 구현하고자 하는 것이 있는데요,
: : :
: : : 1. 윈도우즈 그림판에서 직선, 직사각형, 정사각형, 원, 타원을 그릴시에는 mousedown에서 시작점을 잡아주고, mousemove에서 그려질 도형을 표현해 주고, mouseup에서 확정을 시켜주는데, 제가 지금 구현한 것은 mousemove시에 아무것도 보이지 않습니다. 그리는 작업을 mousemove에 넣으면 연속적으로 계속 도형을 그리게 되어서 안되구요. mousemove에서 어떤 작업을 해 주어야 mousemove시에 그리게 될 도형을 보여줄 수가 있을까요?
: : :
: : :
: : : 2. 그리고 도형들끼리 서로 덮어씌워져야 하는데, 새로 직사각형을 그릴 경우에 새로생긴 직사각형 안쪽에 있는 기존 그림들이 다 지워집니다. 정사각형, 원, 타원에서도 마찬가지이구요. 어떻게 설정을 해 주어야 항상 덮어씌워지게 되는 건지 알고싶습니다.
: : :
: : :
: : : 감사합니다.

+ -

관련 글 리스트
48615 간단한 그림판을 제작중입니다. 권종익 1564 2007/03/28
48624     Re:간단한 그림판을 제작중입니다. 장성호 1382 2007/03/28
48628         Re:Re:간단한 그림판을 제작중입니다. 권종익 1213 2007/03/28
48630             Re:Re:Re:간단한 그림판을 제작중입니다. 장성호 1475 2007/03/29
48653                 Re:Re:Re:Re:간단한 그림판을 제작중입니다. 권종익 1057 2007/03/29
48655                     Re:Re:Re:Re:Re:간단한 그림판을 제작중입니다. 장성호 1206 2007/03/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.