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
[60220] Re:Re:Re:Re:Re:이미지 동적생성시 보이질 않습니다.
제리압빠. [kamizen] 1360 읽음    2010-02-10 16:23
음.. TControl 계열 상속된 녀석들은 Parent만 설정 되어있어도 자동 free 된다..
^________^ 좋은거 배웠네요 감사합니다~~!

장성호 님이 쓰신 글 :
: 동적 생성한 Control 또는 Component 라 하더라도
: 생성할때 Owner만 제대로 정해주면 굳이 명시적으로 free해주지 않아도 됩니다.
: 왜냐하면 Owner컴포넌트가 free될때 자식들을 알아서 free해주니까요
:
: 더구나
: Control인경우 생성자에 Owner를 NULL로 주었다 하더라도
: Control의 Parent만 설정되어있으면 명시적으로 free해주지 않아도 되구요
: Owner가 없다고 하더라도 Parent가 있으면 Parnet가 free될때 자신위에 올려진 control들을 모두 free해주거든요
:
: 메인폼이면 FormClose가 폼의 free로 이어지지만
: 메인폼이 아닌경우 FormClose가 반드시 폼이 free되지는 않죠
:
: 그래서 FormClose때 동적으로 생성한 Control을 free하는것이 문제가 발생할수도 있습니다.
:
: 걍  제 생각에는
:    동적으로 생성한 컴포넌트, 컨트롤이라도 생성자에 Owner를  제대로 주고,
:    명시적으로 free하지 않는것이 바람직 하지 않나 하는것이 제 생각입니다.
:
: 그럼..
:
:
:
: 제리압빠. 님이 쓰신 글 :
: : 아..제가 코드를 잘 못 봤군요. TImage11을 list에 넣는 걸로 착각을 했었습니다..
: :
: : 자... TImage11은 전역 변수 이겠군요.( 지역이면 동적 할당 한거 날려 버리면 없어 져 버리겠지요... )
: :
: : 헤더에 TImage * img; 이라고 public 에 선언이 됐다고 가정하겠습니다.
: : 초기화를 위해서 폼 생성자에
: : __fastcall TForm1::TForm1(TComponent* Owner)
: :     : TForm(Owner)
: : {
: :     img = NULL;
: : }
: : 이렇게 세트 하였습니다.( 동적 할당 받았으면 더이상 할당 안하도록 하기 위해서 )
: : 버튼이 클릭되면 이미지 리스트에서 2번째 항목을 읽어 오는 루틴을 처리 했습니다.
: : void __fastcall TForm1::Button3Click(TObject *Sender)
: : {
: :     if( img == NULL )  // img 가 초기 상태인 경우만 할당 합니다.
: :     {
: :         img = new TImage(this);
: :         ShowMessage( "생성됨");
: :         img->Left   = 0;
: :         img->Top    = 0;
: :         img->Width  = 100;
: :         img->Height = 100;
: :         img->Parent  = Form1;
: :     }
: :
: :     imgList1->GetBitmap( 1 , img->Picture->Bitmap );
: :   
: :     //--------- TImageList의 Width = 100 , Height = 100 이라고 가정 하고 아래 주석을 풀면
: :     // 검정 사각형이 보이면 TImage는 생성 된겁니다.
: :    /*
: :     img->Picture->Bitmap->Canvas->Brush->Color = clBlack;
: :     img->Picture->Bitmap->Canvas->FillRect( Rect( 0 , 0 , img->Width, img->Height ) );         
: :    */
: :
: : }
: : // 폼이 종료 될때 동적 할당 된 정보 삭제 합니다.
: : void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
: : {
: :    delete img; // 혹은 if( img ) delete img;
: : }
: :
: : ImageList를 사용할 경우 ImageList 자체에 Width 와 Height 가 있습니다. 이부분 설정 해보시구요.
: : 이미지가 찌부러 들지요... 사이즈가 작으면.
: : 그리고 이미지를list에 로드 할때 보면 Trasparent Color라는 콤보박스가 활성화 되면 투명색 처리된 부분은
: : clWhite가 투명색이면 clWhite는 TImage에 찍히지 않습니다.
: :
: : 종합해보면. 이미지가 찍히긴 찍혔는데 그 값이 투명색 때문에 보이지 않은 듯 합니다.
: :
: : 아울러 동적할당 하는 경우 동적할당 할 넘을 전체 어플리케이션에서 핸들링 할수 있도록 위에
: : 전역의 TImage *img ; 처럼 선언 후 사용하시는 걸 추천 합니다.
: : 프로그램이 종료 될때 꼭 img를 날려줘야 하기 때문에 그렇습니다.
: :
: : 참고로 실제로 돌려보았습니당.~~~!
: :
: : 수고하세염
: :
: : 동적생성 님이 쓰신 글 :
: : : 우선 답변 감사합니다~(__
: : : ImageList1->GetBitmap(b,Image11->Picture->Bitmap);
: : : 위에소스와 같이 이미지 리스트에 bmp이미지들을 넣어서 그 이미지를 동적생성한 Image11에 넣고싶은데요
: : : 저렇게 하면 안되는 건가요??
: : :
: : :
: : :
: : :
: : :
: : : kamizen 님이 쓰신 글 :
: : : : 아래 코드에서 Image11에 이미지를 로드하는 루틴이 모이지 않습니다만...ㅡ.ㅡ;
: : : : Image11->Picture->LoadFromFile 이게 삽입 되어야 될거 같습니다...( 혹은 타 리소스에서 Picture 정보에 다른 값을 복사해주시던가. )
: : : : 동적 생성인 관계로..Image11의 포인터가 지역 변수라면 ImageList1에 GetBitmap 하신담에  비트맵 확보해주시고...
: : : : 꼭 delete Image11; 해주셔야 할 겁니다.
: : : :
: : : :
: : : : 동적생성 님이 쓰신 글 :
: : : : : TImage *Image11;
: : : : :
: : : : :    Image11 = new TImage(this);
: : : : :    Image11->Parent = Form1;
: : : : :    Image11->Width = 70;
: : : : :    Image11->Height = 50;
: : : : :    Image11->Left = 100;
: : : : :    Image11->Top = 100;
: : : : :    ImageList1->GetBitmap(b,Image11->Picture->Bitmap);
: : : : :
: : : : : 이렇게 동적으로 생성한후에 이미지 리스트에 있는 이미지로 출력하려고 하는데요.
: : : : : 보이질 않습니다.
: : : : :
: : : : : 버튼을 동적생성하여 보면 분명히 잘 나오는데 이미지만 안나오네요. 도와주세요

+ -

관련 글 리스트
60204 이미지 동적생성시 보이질 않습니다. 동적생성 1186 2010/02/10
60206     Re:이미지 동적생성시 보이질 않습니다. kamizen 1150 2010/02/10
60207         Re:Re:이미지 동적생성시 보이질 않습니다. 동적생성 1209 2010/02/10
60218             Re:Re:Re:이미지 동적생성시 보이질 않습니다. 제리압빠. 1233 2010/02/10
60219                 Re:Re:Re:Re:이미지 동적생성시 보이질 않습니다. 장성호 1161 2010/02/10
60220                     Re:Re:Re:Re:Re:이미지 동적생성시 보이질 않습니다. 제리압빠. 1360 2010/02/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.