2009/04/21
[VCL] TImageList 의 이미지를 TSpeedButton 에서 사용하기
TImageList는 여러 이미지를 담아두고 인덱스로 접근하여 사용할 수 있는 컴포넌트 이다. 이 TImageList 의 이미지를 TSpeedButton에 할당해 보았다.
방법은 아주 간단하다. 아래의 한 줄짜리 코드가 그 것이다.
위의 코드는 ImageList 의 특정이미지를 SpeedButton 에 할당을 하는데 위와 같은 코드를 한 번 더 사용하여 다른 이미지를 할당하려 하면 되지 않았다.
새로운 이미지를 할당하기 위해서는 TBitmap 포인터를 생성하고 포인터 값을 할당 한 후에 SpeedButton 의 Glyph 에 할당하면 된다.
위의 코드 실행시 이미지를 바꿀 수 있다. 하지만 위의 코드도 문제가 있다. 배경이 투명한 이미지가 아닐 경우 덮어 씌우기 때문에 문제가 되지 않지만 아이콘과 같은 투명한 이미지를 적용시 이전 이미지가 남아 있는 문제가 있었다. 이를 해결하기 위해서 새로운 이미지를 할당하기 전에 SpeedButton 의 Glyph 에 NULL 을 할당하면 해결할 수 있다.
Original Post : http://neodreamer-dev.tistory.com/293
방법은 아주 간단하다. 아래의 한 줄짜리 코드가 그 것이다.
// ImageList 의 첫번째 인덱스(실제로는 두 번째)의 이미지를
// SpeedButton 에 할당한다.
ImageList->GetBitmap( 1, SpeedButton->Glyph );
위의 코드는 ImageList 의 특정이미지를 SpeedButton 에 할당을 하는데 위와 같은 코드를 한 번 더 사용하여 다른 이미지를 할당하려 하면 되지 않았다.
새로운 이미지를 할당하기 위해서는 TBitmap 포인터를 생성하고 포인터 값을 할당 한 후에 SpeedButton 의 Glyph 에 할당하면 된다.
Graphics::TBitmap* Bitmap = SpeedButton->Glyph;
ImageList->GetBitmap( 2, Bitmap );
SpeedButton->Glyph = Bitmap;
위의 코드 실행시 이미지를 바꿀 수 있다. 하지만 위의 코드도 문제가 있다. 배경이 투명한 이미지가 아닐 경우 덮어 씌우기 때문에 문제가 되지 않지만 아이콘과 같은 투명한 이미지를 적용시 이전 이미지가 남아 있는 문제가 있었다. 이를 해결하기 위해서 새로운 이미지를 할당하기 전에 SpeedButton 의 Glyph 에 NULL 을 할당하면 해결할 수 있다.
Graphics::TBitmap* Bitmap = SpeedButton->Glyph;
SpeedButton->Glyph = NULL;
ImageList->GetBitmap( 2, Bitmap );
SpeedButton->Glyph = Bitmap;
Original Post : http://neodreamer-dev.tistory.com/293
Labels:
C++
,
C++ Builder
,
TImageList
,
TistoryOldPost
,
TSpeedButton
,
VCL
,
Visual Component Library
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment