CImageList
CImageList create flags
설 명
ILC_COLOR
디폴트 색상이 적용되는데 포통 ILC_COLOR4가 적용된다
ILC_COLOR4
4비트(16색상)
ILC_COLOR8
8비트(256색상)
ILC_COLOR16
16비트
ILC_COLOR24
24비트
ILC_COLOR32
32비트
ILC_COLORDDB
장치 종속적인 비트맵
ILC_MASK
투명 이미지를 출력하기 위해 마스크를 사용한다
CImageList draw flags
설 명
ILD_BLEND25, ILD_FOCUS
시스템 하이라이트 색상을 25% 섞어서 출력한다. 마스크가 지정되어 있지 않으면 사용할 수 없다. 탐색기에서 파일을 드래그할 때 파일의 아이콘이 평상시보다 훨씬 더 밝아지는 것을 볼 수 있는데 이 방법으로 그린것이다
ILD_BLEND50, ILD_SELECTED, ILD_BLEND
시스템 하이라이트 색상을 50% 섞어서 출력한다
ILD_MASK
마스크를 출력한다
ILD_NORMAL
배경 색상으로 이미지를 출력한다. 배경색상이 CLR_NONE이면 이미지는 마스크를 사용하여 투명하게 그려진다
ILD_TRANSPARENT
마스크를 사용하여 투명한 이미지를 그린다. 마스크가 정의되어 있지 않으면 이 값은 사용할 수 없다
CImageList Operations
설 명
Add
이미지나 이미지들을 이미지 리스트에 추가한다
Attach
이미지 리스트 오브젝트를 이미지 리스트에 Attach시킨다
Detach
이미지 리스트 오브젝트를 이미지 리스트에서 Detach 시킨다
DeleteImageList
이미지 리스트를 지운다
Draw
드레그 & 드롭 중에도 이미지 리스트를 출력한다
Remove
이미지 리스트에서 이미지를 삭제한다
Read
파일에서 이미지 리스트를 읽어온다
Write
파일에 이미지 리스트를 쓴다
CImageList create flags
설 명
ILC_COLOR
디폴트 색상이 적용되는데 포통 ILC_COLOR4가 적용된다
ILC_COLOR4
4비트(16색상)
ILC_COLOR8
8비트(256색상)
ILC_COLOR16
16비트
ILC_COLOR24
24비트
ILC_COLOR32
32비트
ILC_COLORDDB
장치 종속적인 비트맵
ILC_MASK
투명 이미지를 출력하기 위해 마스크를 사용한다
CImageList draw flags
설 명
ILD_BLEND25, ILD_FOCUS
시스템 하이라이트 색상을 25% 섞어서 출력한다. 마스크가 지정되어 있지 않으면 사용할 수 없다. 탐색기에서 파일을 드래그할 때 파일의 아이콘이 평상시보다 훨씬 더 밝아지는 것을 볼 수 있는데 이 방법으로 그린것이다
ILD_BLEND50, ILD_SELECTED, ILD_BLEND
시스템 하이라이트 색상을 50% 섞어서 출력한다
ILD_MASK
마스크를 출력한다
ILD_NORMAL
배경 색상으로 이미지를 출력한다. 배경색상이 CLR_NONE이면 이미지는 마스크를 사용하여 투명하게 그려진다
ILD_TRANSPARENT
마스크를 사용하여 투명한 이미지를 그린다. 마스크가 정의되어 있지 않으면 이 값은 사용할 수 없다
CImageList Operations
설 명
Add
이미지나 이미지들을 이미지 리스트에 추가한다
Attach
이미지 리스트 오브젝트를 이미지 리스트에 Attach시킨다
Detach
이미지 리스트 오브젝트를 이미지 리스트에서 Detach 시킨다
DeleteImageList
이미지 리스트를 지운다
Draw
드레그 & 드롭 중에도 이미지 리스트를 출력한다
Remove
이미지 리스트에서 이미지를 삭제한다
Read
파일에서 이미지 리스트를 읽어온다
Write
파일에 이미지 리스트를 쓴다
ImageList는 동일한 크기를 가진 이미지의 집합으로, 각각의 이미지를 배열항목처럼 취급하여 0 부터 시작하는 인덱스로 참조할수 있도록 만든것.
//ImageList를 생성만 하는 함수.
BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );
//1,2파라미터 : 이미지의 폭과 넓이
//3 파라미터 : 이미지 리스트의 타입 지정.주로 색상수를 나타냄. ILC_COLOR4일때 4비트(16색상)
//4 파라미터 : 초기에 포함할 이미지의 개수
//5 파라미터 : 새로운 이미지를 추가하기 위해 이미지리스트의 메모리를 재할당할때 얼마만큼의 여분의 메모리를 할당할것인가를 나타냄. 4 = 이미지 4개를 추가할 만큼 할당.
//ImageList를 생성함과 동시에 비트맵 이미지로 초기화까지 하는 함수.
BOOL Create( UINT nBitmapID, int cx, int nGrow, COLORREF crMask );
//1 파라미터 : 비트맵소스의 리소스 ID
//2 파라미터 : 이미지의 폭(y값 자동 지정)
//3 파라미터 : 새로운 이미지를 추가하기 위해 이미지리스트의 메모리를 재할당할때 얼마만큼의 여분의 메모리를 할당할것인가를 나타냄. 4 = 이미지 4개를 추가할 만큼 할당.
//4 파라미터 : 투명색으로 사용할 색상 지정.
예제)
CImageList m_il1, m_il2;
m_il1.Create(32, 32, ILC_COLOR4, 2, 1);
m_il2.Create(IDB_BITMAP1, 48, 1, RGB(255,255,255));
//이미지 추가
//Icon 추가
int Add( HICON hIcon );
//hIcon: 아이콘 리소스를 가리키는 핸들값, CWinApp::LoadIcon()의 리턴값을 사용하면 됨.
//Bitmap 추가
int Add( CBitmap* pbmImage, COLORREF crMask );
// 1 파라미터 : 비트맵 리소스를 담고 있는 CBitmap 객체의 주소
// 2 파라미터 : 투명색 지정.
예제)
//Icon추가
m_il1.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_il1.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
//Bitmap추가
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
m_il2.Add(&bitmap, RGB(255,255,255));
//화면 출력
CImageList::Draw(), CImageList::DrawIndirect(), CImageList::DrawEx()를 사용.
DrawEx는 MFC 7.0 이상에서만 가능.
BOOL Draw( CDC* pdc, int nImage, POINT pt, UINT nStyle );
//1 파라미터 : 출력할 대상을 나타내는 Device Context
//2 파라미터 : 출력할 이미지의 인덱스
//3 파라미터 : 출력 좌표
//4 파라미터 : 그리기 스타일을 지정하는 값으로
nStyle
Flag specifying the drawing style. It can be one or more of these values:
Value | Meaning |
ILD_BLEND25, ILD_FOCUS | 시스템 하이라이트(Highlight) 색상을 25% 섞어서 출력. |
ILD_BLEND50, ILD_SELECTED, ILD_BLEND | 시스템 하이라이트(Highlight) 색상을 50% 섞어서 출력. |
ILD_MASK | 마스크를 출력한다. |
ILD_NORMAL | 이미지의 배경색을 이용하여 출력하며, 배경색이 CLR_NONE으로 설정된 경우 마스크를 이용하여 이미지를 투명하게 출력. |
ILD_TRANSPARENT | 마스크를 이용하여 이미지를 투명하게 출력한다. |
예제)
Void CExImageListView::OnDraw (CDC* pDC)
{
m_il.SetBkColor (CLR_NONE); //배경색 설정 (CLR_NONE은 투명색)
m_il.Draw (pDC, 0, CPoint(100, 200), ILD_NORMAL); //투명 출력
m_il.Draw (pDC, 0, CPoint(150, 200), ILD_BLEND25);
m_il.Draw (pDC, 0, CPoint(200, 200), ILD_BLEND50); //투명 출력
m_il.Draw (pDC, 0, CPoint(250, 200), ILD_MASK);
}
//리스트 컨트롤과 이미지 리스트 연결
CListCtrl::SetImageList
CImageList* SetImageList( CImageList* pImageList, int nImageList );
Return Value
A pointer to the previous image list.
Parameters
pImageList
Pointer to the image list to assign.
nImageList
Type of image list. It can be one of these values:
- LVSIL_NORMAL Image list with large icons.
- LVSIL_SMALL Image list with small icons.
- LVSIL_STATE Image list with state images.
예제)
m_ObjectList.SetImageList(m_largeImage, LVSIL_NORMAL);
이미지 리스트의 사용 [출처] CImageList Class|작성자 러브러브
-------------------------------------------------------------------------------------
보통 컨트롤에서는 이미지 리스트를 자동으로 연결해주는 SetImageList 와 같은 함수가 있다.
이와는 별도로 리스트 내부에서 원하는 아이콘을 뽑아다 사용할 경우는 다음 메서드를 이용한다.
HICON ExtractIcon(int nImage);
주의. ExtrancIcon을 이용하여 리턴된 HICON 핸들은 이미지 리스트의 내부 핸들의 포인터를
리턴하는것이 아니라, 복사한 핸들을 리턴하기 때문에.. 다 사용하고 나면 CloseHandle()을
이용하여 꼭 해재하여 주어야한다.
이 함수를 루프나 혹은 드로잉 함수에서 그 때 그때, 불러서 사용한다면 길지 않은 시간이
흐른 후 시스템의 리소스가 부족합니다 라는 메시지와 다운 되는 컴퓨터를 보게 될것이다.
'Programming > MFC' 카테고리의 다른 글
UNICODE <-> ANSI 변환 (0) | 2011.11.24 |
---|---|
컨트롤을 상속 클래스, NM_CLICK 가 부모윈도우에 통지가 안될때.. (2) | 2010.12.03 |
ini 에서 섹션(Section) 정보 얻기 - GetPrivateProfileSectionNames (6) | 2010.08.13 |
CListCtrl 파일로 저장 - CListCtrl Save, Load (0) | 2010.08.12 |
MFC 에서 서로 다른 클래스의 핸들 얻어오기 (1) | 2008.05.30 |
Visual Studio 6.0 + Windows XP 설치 해결법 (0) | 2008.05.28 |
MFC 다이얼로그 기반 툴바 붙이기 (0) | 2007.04.27 |
다이얼로그에 드래그앤 드랍 (1) | 2007.04.27 |