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
[59229] Re:감사합니다~
장성호 [nasilso] 979 읽음    2009-11-25 12:33
지오메트릭펜이라는게 있었군요

워낙에   기초가 부실에서 그런게 있는지 조차 몰랐네요 쩝쩝


가끔씩
어떤 문제에 부닥쳤을때 열심히 고민해서  구현했는데..
나중에 보면  관련함수나 Library가 있는경우가 부지기수 더군요...

뭐.. 고민한것이 전혀 손해본것은 아니지만..
삽질하고 있다는 느낌이 들때가..


rivers 님이 쓰신 글 :
: 잘되네요
: 사각형은 지오메트릭펜으로 비스무리 하게 만들었는데
: 이걸로 다시 한번 해봐야겠네요
:
:
: 장성호 님이 쓰신 글 :
: : 음...
: :
: : TCanvas의 Polygon 함수를 이용하면 쉽게 구현이 가능할듯 한데요...
: :
: : [샘플소스]
: :
: :
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: :     this->DoubleBuffered=true;
: :     Image1->Canvas->Rectangle(Rect(0,0,Image1->Width,Image1->Height));
: : }
: : //---------------------------------------------------------------------------
: : 
: : TPoint stPt1,stPt2;
: : int iPBrushWid=3; 
: : void __fastcall TForm1::Image1MouseDown(TObject *Sender,
: :       TMouseButton Button, TShiftState Shift, int X, int Y)
: : {
: :     stPt1=Point(X-iPBrushWid,Y-iPBrushWid);
: :     stPt2=Point(X+iPBrushWid,Y+iPBrushWid);
: : 
: :     Image1->Canvas->Pen->Width=1;
: :     Image1->Canvas->Brush->Color=clBlack;
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
: :       int X, int Y)
: : {
: :     if(Shift.Contains(ssLeft))
: :     {
: :         TPoint cuPt1,cuPt2,cuPt3,cuPt4;
: :         cuPt1=Point(X-iPBrushWid,Y-iPBrushWid);
: :         cuPt2=Point(X+iPBrushWid,Y+iPBrushWid);
: : 
: :         TPoint p[5]={stPt1,stPt2,cuPt2,cuPt1,stPt1};
: :         Image1->Canvas->Polygon(&p[0],4);
: :         stPt1=cuPt1;
: :         stPt2=cuPt2;
: :     }
: : }
: : 

: :
: : 위와같이 하면 왼쪽 위에서  오른쪽 아래로 빗금의 펜브러쉬가 구현됩니다.
: :
: : [Size]
: : iPBrushWid 값을 조정하면 크기가 조정되구
: :
: : [방향]
: :    cuPt1 ,cuPt2를 구할때
: :     y값에 +/- iPBrushWid의 방향을 바꿔버리면 빗금의 방향이 바뀌어 버릴것입니다.
: :
: : [사각형 Pen브러쉬]
: :    사각형이 좀 문제이긴 한데..
: :    위 방식을 응용하면 쉽게 구현 가능합니다.
: :
: : 그럼..
: :
: :
: : rivers 님이 쓰신 글 :
: : : 윈도우즈 그림판 브러시를 보면 사각형과, 점,
: : : 대각선으로 브러시 모양을 선택할 수 있습니다.
: : : 점이야  펜의 굵기를 늘리면 사용할 수 있지만
: : : 사각형이나 대각선은 어떤식으로 구현해야 할지
: : : 감을 못잡겠습니다.
: : : 사각형의 브러시 모양을 만들어 보려고 마우스가 움직일때마다
: : : 좌표를 따와서 일정크기의 사각형을 계속 그려줬는데
: : : 마우스를 빠르게 움직이면 선이 되는게 아니라
: : : 드문드문 사각형이 나오는 형태로 되더군요.
: : :
: : : 이것을 구현한 예제파일이 있으시면 부탁드립니다.

+ -

관련 글 리스트
59214 그림판의 브러시구현 rivers 1117 2009/11/24
59218     Re:그림판의 브러시구현 장성호 1703 2009/11/24
59224         감사합니다~ rivers 936 2009/11/25
59229             Re:감사합니다~ 장성호 979 2009/11/25
59215     Re:그림판의 브러시구현 Nibble 1186 2009/11/24
59217         Re:Re:그림판의 브러시구현 rivers 1298 2009/11/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.