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
[1581] Re:[질문] 감사.. c/s전송 재 질문
박지훈.임프 [cbuilder] 3539 읽음    1999-07-13 00:00
: 에고..
: 질문 감사드리며..
: 저의 컴에는 udp 디렉토리가 없는데...
: 말씀하신데로라면 이미지를 화일로 저정한뒤
: 이것을 읽어서 전송 하라는 뜻인것 같은데
: 전 메모리에서 직접 전송하고 싶습니다..
: 메모리에서 저장하는 방법을 구체적으로 설명
: 해 주셨으면 합니다.
:
: 제가 테스트한 프로그램의 일부 입니다.
:
: TMomoryStream *ts;
: ScreenBmp->SaveToStream(ts); 
:       // ScreenBmp는 캡춰된 이미지
:       // TBitmap 으로 선언됨
: Graphics::TBitmap *myBmp;
: myBmp=new Graphics::TBitmap;
:
: myBmp->Width=640;
: myBmp->Height=480;
: myBmp->LoadFromStream(ts);
:   // 위라인 실행후 myBmp의 Width와 Height는 0로 됨
: Image1->Picture->Bitmap=myBmp;
:
: 이렇게 했을경우 ts와 myBmp에는 이미지가
: 저장 되고 있는지 알고 싶읍니다..
:
: myBmp를 화면에 그릴려고 하면 그려지지가
: 않네요(마지막 라인). 조언을 ... 맨날 질문만 하여
: 죄송..T.T
:
:


임펠리테리입니다.
한가지 실수를 하셨는데, 스트림이란, 그냥 버퍼가 아니라, '현재위치'의 개념이 있는
객체입니다. 여기서 '현재위치'가 Position 프로퍼티로 구현됩니다.

보여주신 소스에서, 먼저 비트맵을 스트림에 저장하면 Position은 전체 Bmp의 크기만큼 뒤로
옮겨져 있는 상태가 됩니다. 이 상태에서 TBitmap::LoadFromSteam()을 하면,
현재 Position 위치에서부터 비트맵을 찾아보게 되는데, 이 위치가 전체 스트림의
끝이므로 당연히 아무것도 발견할 수 없게 되고, 결과적으로 비트맵은 텅 비게 되죠.

그래서.. 보여주신 소스를 고치면,
ScreenBmp->SaveToStream(ts);
ts->Position = 0;
Image1->Picture->Bitmap->LoadFromStream(ts);
이렇게, SaveToStream()을 하고 난 후 로드하기 전에 스트림의 Position 프로퍼티를
시작 위치로 옮겨 주어야만 합니다.

그럼 도움되시길...

+ -

관련 글 리스트
1573 [질문] 감사.. c/s전송 재 질문 방랑자 3394 1999/07/13
1588     Re:[질문] 감사.. c/s전송 재 질문 문보석 3413 1999/07/16
1581     Re:[질문] 감사.. c/s전송 재 질문 박지훈.임프 3539 1999/07/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.