Maxima's Lab

[C++, MFC] List Control을 사용하여 Image Thumbnail 만들기 본문

C(C++)/MFC

[C++, MFC] List Control을 사용하여 Image Thumbnail 만들기

Minima 2023. 9. 23. 10:34
728x90
SMALL

안녕하세요, 오늘은 MFC 프로그램에서 List Control을 사용하여 Image Thumbnail을 만드는 방법에 대해서 알아보겠습니다.

 

먼저, 다음과 같이 List Control을 생성합니다.

 

List Control 생성

 

 

위의 이미지와 같이 List Control을 생성 후 다음과 같은 코드를 작성해줍니다.

 

BOOL MyDialogDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 최초 생성 시 동일

	// List Control 스타일 수정
    // List Control의 스타일을 수정하여 아이콘 뷰 모드로 설정하고, 아이콘을 왼쪽 정렬
	m_ListCtrl.ModifyStyle(LVS_TYPEMASK, LVS_ICON | LVS_ALIGNLEFT);

	// List Control의 높이를 controlHeight에 저장
	CRect rect;
	m_ListCtrl.GetClientRect(&rect);
	int controlHeight = rect.Height();

	// 이미지 리스트 생성
	m_imageList.Create(256, controlHeight, ILC_COLOR32, 3, 1); // 256

	// 색 정의
	COLORREF colors[3] = { RGB(255, 0, 0), RGB(0, 0, 255), RGB(0, 255, 0) }; // 빨강, 파랑, 초록

	CDC* pDC = GetDC();
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	
    // 비트맵 생성 및 이미지 리스트에 추가
	for (int i = 0; i < 3; i++) {
		CBitmap bitmap;
		bitmap.CreateCompatibleBitmap(pDC, 256, controlHeight);
		CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
		memDC.FillSolidRect(0, 0, 256, controlHeight, colors[i]);
		memDC.SelectObject(pOldBitmap);
		m_imageList.Add(&bitmap, static_cast<CBitmap*>(NULL));
	}

	ReleaseDC(pDC);

	// 이미지 리스트 연결
	m_ListCtrl.SetImageList(&m_imageList, LVSIL_NORMAL);

	// List Control에 아이템 삽입
	m_ListCtrl.InsertItem(0, _T("Red"), 0);
	m_ListCtrl.InsertItem(1, _T("Blue"), 1);
	m_ListCtrl.InsertItem(2, _T("Green"), 2);


	return TRUE;

 

위의 코드는 Image Thumbnail를 너비가 256, 높이가 List Control의 높으로 설정하고 각 빨강, 파랑, 녹색으로 Image Thumbnail을 만들어 List Control에 추가한 예시입니다.

 

실행 결과는 다음과 같습니다.

 

Code 실행 결과

 

이상으로, List Control을 사용하여 Image  Thumbnail을 추가하는 방법에 대해서 알아보았습니다.

감사합니다.

728x90
LIST
Comments