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
[49708] Re:Re:답변 감사드립니다...^^
c++초보 [] 1222 읽음    2007-06-25 12:19
답변 감사드립니다...^^


장성호 님이 쓰신 글 :
: 여러가지 방법이 있는데요...
:
: 1. Canvas에 있는 함수를 이용하는 방법이 가장 일반적입니다.
:
: CopyRect    ==> 가장 쉽고 직관적
:
:     Image2->Picture->Bitmap->Width=200;
:     Image2->Picture->Bitmap->Height=200;
:     TRect t_rc=Rect(0,0,200,200);                   //복사할 영역
:     TRect s_rc=Rect(100,0,300,200);              //원본    영역
:     Image2->Picture->Bitmap->Canvas->CopyRect(t_rc,Image1->Picture->Bitmap->Canvas,s_rc);
:
:
: 기타
:    Draw함수를 이용해도 되고
:    BrushCopy 도 Image가 복사되더군요
:
:     Image2->Picture->Bitmap->Width=200;
:     Image2->Picture->Bitmap->Height=200;
:     TRect rc=Rect(0,0,200,200);
: //    Image2->Picture->Bitmap->Canvas->BrushCopy(rc,Image1->Picture->Bitmap,rc,clRed);
: //    Image2->Picture->Bitmap->Canvas->Draw(0,0,Image1->Picture->Bitmap);
:
: 2. 그리고 Canvas의 Pixcel을 직접 하나씩 대입해도 되죠
:  
:     for(int i=0;i<200;i++)
:     {
:         for(int j=0;j<200;j++)
:         {
:             Image2->Canvas->Pixels[i][j]=Image1->Canvas->Pixels[i][j];
:         }
:     }
:    근데 이건 속도가 많이 느려요
:
: 3. 그리고  직접 memory를 복사해도 됩니다.
:      Picture->Bitmap->ScanLine을 이용해서
:      이는 이용하는 방법을 좀 익혀야 하지만
:      잘만이용하면 아주 유용하게 쓸수 있는 ...
:
:     int *pt1;
:     int *pt2;
:     for(int i=0;i<200;i++)
:     {
:         pt1=(int *)Image1-> Picture->Bitmap->ScanLine[i];
:         pt2=(int *)Image2->Picture->Bitmap->ScanLine[i];
:         memcpy( pt2,pt1,800);   // 왜  800이냐 하면 PixcelFormat을 pf32bit 로 볼때  200 * 4Byte  = 800 Byte
:                                              // PixcelFormat 이 다르면  size도 달라지겠죠
:     }    
:    
:
:     이방법은   빠른편... 
:
: 4. 기타....
:    
:
:
: c++초보 님이 쓰신 글 :
: : 같은 크기의 이미지를 복사할때...
: :
: : Timage1->Picture->Assign(Timage2->Picture);
: : Timage1->AutoSize = true;
: :
: : 위에처럼 사용하였는데요.
: :
: : 소스이미지의 일부분만을 복사하려고 하는데 방법을 잘 모르겠내요.
: : 답변 부탁드립니다.

+ -

관련 글 리스트
49704 TImage를 복사할때... c++초보 1025 2007/06/25
49707     Re:TImage를 복사할때... 장성호 1732 2007/06/25
49708         Re:Re:답변 감사드립니다...^^ c++초보 1222 2007/06/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.