|
답변 감사드립니다...^^
장성호 님이 쓰신 글 :
: 여러가지 방법이 있는데요...
:
: 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;
: :
: : 위에처럼 사용하였는데요.
: :
: : 소스이미지의 일부분만을 복사하려고 하는데 방법을 잘 모르겠내요.
: : 답변 부탁드립니다.
|