Q&A

  • TBitmap에 대해서 궁금한 점이 있습니다.
안녕하세요.



TBitmap을 이용하여 이미지를 자르는 작업을 하던 중 의문이 있어 질문을

드립니다.



MyBMP : TBitmap;



MyRect := Rect(ii*cWid, jj*cHgt, (ii+1)*cWid, (jj+1)*cHgt);

MyOther := Rect(0,0,cWid, cHgt);



MyBMP.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);

MyBMP.SaveToFile ('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');



이렇게 하면 CopyRect할 때 이미지가 복사가 안되는 것 같습니다.

SaveToFile 하면 바트맵파일은 만들어지는데 0 KB 입니다.



그런데 똑같은 코드로 아래와 같이 하면



image2.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);

image2.Picture.SaveToFile('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');



하면 파일이 정상적으로 만들어 집니다.

그런데 저는 JPG 파일로 말들어야 하기 때문에 처음 방법으로 코딩을 하여



MyJPEG.Assign(MyBMp);



이런 식으로 작업을 하려고 합니다.



왜 TBitmap 에서 CopyRect를 하면 이미지가 복사가 안되는지 모르겠습니다.

여려분의 조언을 부탁합니다.





2  COMMENTS
  • Profile
    델맨 2001.05.24 22:19
    최진영 wrote:

    > 안녕하세요.

    >

    > TBitmap을 이용하여 이미지를 자르는 작업을 하던 중 의문이 있어 질문을

    > 드립니다.

    >

    > MyBMP : TBitmap;

    >

    > MyRect := Rect(ii*cWid, jj*cHgt, (ii+1)*cWid, (jj+1)*cHgt);

    > MyOther := Rect(0,0,cWid, cHgt);

    >

    > MyBMP.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);

    > MyBMP.SaveToFile ('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');

    >

    > 이렇게 하면 CopyRect할 때 이미지가 복사가 안되는 것 같습니다.

    > SaveToFile 하면 바트맵파일은 만들어지는데 0 KB 입니다.

    >

    > 그런데 똑같은 코드로 아래와 같이 하면

    >

    > image2.Canvas.CopyRect(MyOther, Image1.Canvas, MyRect);

    > image2.Picture.SaveToFile('d:jpgwimagedivide' + IntToStr(ii) + IntToStr(jj) + '.bmp');

    >

    > 하면 파일이 정상적으로 만들어 집니다.

    > 그런데 저는 JPG 파일로 말들어야 하기 때문에 처음 방법으로 코딩을 하여

    >

    > MyJPEG.Assign(MyBMp);

    >

    > 이런 식으로 작업을 하려고 합니다.

    >

    > 왜 TBitmap 에서 CopyRect를 하면 이미지가 복사가 안되는지 모르겠습니다.

    > 여려분의 조언을 부탁합니다.

    >



    대상 비트맵의 크기설정을 하지 않아서 그런게 아닐까요?

    height 나 width 가 0 이라면 CopyRect으로 복사해도 아무것도 복사되지 않습니다.



  • Profile
    최진영 2001.05.24 22:56
    Rect는 지정이 되어 있습니다.



    아래 이미지 콤포넌트로 이러한 작업을 하면 영역복사가 됩니다.