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
[59218] Re:그림판의 브러시구현
장성호 [nasilso] 1702 읽음    2009-11-24 16:34
음...

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:그림판의 브러시구현 장성호 1702 2009/11/24
59224         감사합니다~ rivers 935 2009/11/25
59229             Re:감사합니다~ 장성호 979 2009/11/25
59215     Re:그림판의 브러시구현 Nibble 1185 2009/11/24
59217         Re:Re:그림판의 브러시구현 rivers 1298 2009/11/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.