|
ReleaseHandle 은 HBITMAP 과 호환을 위하여 Dormant 등과 실행을 하는 경우가 많습니다. (클립보드 시에요)
일반적으로 그래픽 작업에서는 ReleaseHandle 는 사용하실 필요가 없으며, 이전에 한번 게시물에서 본 것 같은데, ReleaseHandle 이 확실한 Free를 시켜주지 못한다는군요.. 지금은 어떻지 모르겠네요.
ReleaseHandle 의 Return은 HBITMAP 값입니다. 이것을 이용해서 클립보드로 저장 혹은 불러들이는 작업이 많구요..
ReleaseHandle은 HBITMAP이나 Canvas을 다른 작업과 호환시키기 위하여 Dormant를 선언하고, 그것을 Free하기 위하여 대부분 사용하구요. (Canvas 호환 작업은 오히려 BitBlt API가 훨씬 빠르고 간단하구요) 일반적인 Bitmap 작업에서는 사용하실 필요가 없습니다.
1, 2, 3 답변 역시 모두 사용하지 않으셔도 됩니다.
이미지를 초기화 시키시려면,
Image1->Picture->Assign(NULL);
이런 방법으로 초기화 시키실 수 있습니다.
유지상 님이 쓰신 글 :
: Graphics::TBitmap *Bitmap2 = new Graphics::TBitmap();
: Bitmap2->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp ");
: Canvas->Draw(20,20,Bitmap2);
: Bitmap2->ReleaseHandle();
: delete Bitmap2;
:
: 위의 소스코드에 대해서 궁금한 게 있습니다.
: 1. 위의 소스코드에서 Bitmap2->ReleaseHandle();은 꼭 해줘야 되나요? 아니면 안해줘도 문제없나요?
:
: 2. 만약에 Bitmap2에서 Load동작을 두번 할 경우, 즉,
: Bitmap2->LoadFromFile("C:\\pie.bmp ");
: Bitmap2->LoadFromFile("C:\\fund.bmp ");
: 와 같이 두번할 경우에는 두번째로 Load하기 전에 아무것도 안해줘도 되나요? 아니면 두번째로 Load하기 전에 아래처럼 ReleaseHandle을 꼭해줘야 하나요?
:
: Bitmap2->LoadFromFile("C:\\pie.bmp ");
: Canvas->Draw(20,20,Bitmap2);
: Bitmap2->ReleaseHandle();
: Bitmap2->LoadFromFile("C:\\fund.bmp ");
:
: 3.
: Load 안된 상태에서 ReleaseHandle을 호출해도 아무 문제 없나요? 즉, 아래와 같이 해도 문제 없나요?
:
: Graphics::TBitmap *Bitmap2 = new Graphics::TBitmap();
: Bitmap2->ReleaseHandle(); //<-- 바로 여기..
: Bitmap2->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp ");
: Canvas->Draw(20,20,Bitmap2);
: Bitmap2->ReleaseHandle();
: delete Bitmap2;
:
|