|
일단, 팁하나: TImage object의 이미지 내용을 없애고, 안보이게 하기
TImage * Image1;
...
Image1->Visible = false; // 이건 아니고, (단지 안보일 뿐임)
Image1->Picture = NULL; // 이렇게 하면 메모리에서 해제하는 것 같음(VCL 소스 뒤져본 결과)
다음은 질문__________입니다.
TImage object가 현재 이미지를 가지고 있는지 아닌지를 알아내는 확실하고
합리적인 방법은 무엇일까요?
긴 에필로그_____입니다.
아쉬운대로 방법 1)
위 팁에서 힌트를 얻어 Image1->Picture == NULL 로 판단하기:
하지만, 프로그램이 막 시작한 시점에는 Image1 에 이미지를 넣지 않았더라도
Image1->Picture != NULL 이더군요. FormCreate() 따위에서 NULL 초기화를
직접 하게끔 코딩을 하고, 또 프로그램 진행중에 Unload하는 상황에서는
반드시 Image1->Picture = NULL; assign을 해 준다면 방법 1)을 쓰는 데
큰 문제는 없는 것 같습니다.
아쉰운대로 방법 2)
Image1->Picture->Width == 0 || Image1->Picture->Height == 0 으로 판단하기:
몇 번 해 보는데 그림이 없으면 당연히 폭과 높이가 0 이겠지요?
단, 행여 Image1->Width와 Image1->Height로 판단하려 해서는 안됨.
저는 현재는 '아쉬운 대로' 방법 2)를 쓰고 있습니다. 무리는 없을까요?
그럼
최성규
|