Q&A

  • TBitmap을 TMemoryStream으로 저장할려면 어떻게 해야 하나요?
안녕하세요. 이호림이라고 합니다.
아래와 같이 코딩했는데 잘안되네요...


var
  ABitmap: TBitmap;
  AMemStream: TMemoryStream;
begin
  ABitmap := TBitmap.Create;
  AMemStream := TMemoryStream.Create;
  try
    ABitmap := CaptureScreen(cmScreen);  // 화면을 캡쳐후 TBitmap으로 리턴
    ABitmap.SaveToStream(AMemStream);
  finally
    ABitmap.Free;
  end;

  Image1.Picture.Bitmap := TBitmap(AMemStream);
  AMemStream.Free;
end;


위처럼 메모리스트림으로 하면 TImage 컴포넌트에 캡쳐한 이미지가 안나타납니다.
그런데 비트맵을 파일로 저장하고 불러오면 잘되요...

TBitmap을 TMemoryStream 으로 저장가능한 방법 알고 있으신분 알려주시면 고맙겠습니다...
1  COMMENTS
  • Profile
    하얀까마귀 2004.07.28 00:50
    안녕하세요 하얀까마귀 입니다.

    스트림으로 저장된걸 타입을 바꾼다고 되진 않습니다. 이건 다른거니까요..
    TBitmap 이랑 이미지랑은 분명 다른거죠. 이건 콤포넌트고
    저장한건 해당 콤포넌트가 가지고 있던 데이타니까요. ㅠㅠ


    AmemStream.Position := 0;
    Image1.Picture.Bitmap.LoadofStream(AmemStream);

    하시면 되겠네요.. 음..
    그것말고도
    ABitmap := CaptureScreen(cmScreen);  // 화면을 캡쳐후 TBitmap으
    이넘도 영 맘에 안드는군요.. 리턴값이 아마 TBitmap 이겠죠?

    ABitmap을 파라메터로 넘겨주던지 하시는게 좋을것 같네요
    아니면 생성부분을 바꾸시던지요..

    잘 안되실때나 에러날때 꼭.. 해당 하는 소스들을 한번 확인해 보세요. 그럼
    훨신 더 이해가 빠르실껍니다. 지금도 SaveofStream 같은 소스요.
    보면 공부많이 되요. ㅎㅎ

    즐델하세요 그럼..