[MFC] ListControl 에 image 나열 혹은 삽입하기
이미지들을 쭉 나열해야할 필요성이 있을 때 쓰기 좋.....은진 모르겠지만
나중에 또 쓸일이 있을 듯 하여 기록!!
우선 멤버 변수로 CListCtrl m_lcImageList;를 선언한 상태임
TCHAR szPath[_MAX_PATH];
int nIndex = 0;
int nIconSize = 64; // 원본 이미지 크기가 제각각이어서 사이즈 크기 정함
static CImageList cImgList;
// 이미지 리스트 초기화
if (cImgList == NULL)
{
cImgList.Create(nIconSize, nIconSize, ILC_COLOR16, 2, 2);
}
else
{
m_lcImageList.DeleteAllItems();
while (cImgList.GetImageCount())
cImgList.Remove(0);
}
CBitmap bmp;
CImage image;
CImage copyImg; // 이미지를 늘려 저장할 변수
CImage img;
copyImg.Create(nIconSize, nIconSize, 16); //카피 이미지 설정 값
// 이미지 로드
bResult = image.Load(szPath);
// 읽기 성공한 경우
if (bResult == S_OK)
{
// 이미지를 특정 크기로 늘리거나 줄이기
BOOL bResult = image.StretchBlt(copyImg.GetDC(), 0, 0, nIconSize, nIconSize, SRCCOPY);
// 세이브할 이미지 이름
_stprintf(szPath, 생략 );
// 이미지 세이브 : 현재 바로 입력하면 이미지가 뜨지않아 저장 후 로드한 이미지로 사용중
copyImg.Save(szPath);
Sleep(100);
img.Load(szPath);
bmp.Attach(img);
cImgList.Add(&bmp, RGB(0, 0, 0)); // 두번째 인자는 마스크로 검정색으로 해야 이미지 주변이 하얗게 나온다.
strItem.Format(_T("Pattern %d"), i);
int a = cImgList.GetImageCount();
int b = m_lcImageList.GetItemCount();
m_lcImageList.InsertItem(i, strItem, i);
copyImg.ReleaseDC();
bmp.Detach();
}
}
m_lcImageList.SetImageList(&cImgList, LVSIL_NORMAL);
아직 중간에 파일을 저장해서 다시 불러와야하는 부분 왜 그런지 모르겠지만
잘 동작하니 나중에 파해쳐보도록 하자!
나중에 또 쓸일이 있을 듯 하여 기록!!
우선 멤버 변수로 CListCtrl m_lcImageList;를 선언한 상태임
TCHAR szPath[_MAX_PATH];
int nIndex = 0;
int nIconSize = 64; // 원본 이미지 크기가 제각각이어서 사이즈 크기 정함
static CImageList cImgList;
// 이미지 리스트 초기화
if (cImgList == NULL)
{
cImgList.Create(nIconSize, nIconSize, ILC_COLOR16, 2, 2);
}
else
{
m_lcImageList.DeleteAllItems();
while (cImgList.GetImageCount())
cImgList.Remove(0);
}
CBitmap bmp;
CImage image;
CImage copyImg; // 이미지를 늘려 저장할 변수
CImage img;
copyImg.Create(nIconSize, nIconSize, 16); //카피 이미지 설정 값
// 이미지 로드
bResult = image.Load(szPath);
// 읽기 성공한 경우
if (bResult == S_OK)
{
// 이미지를 특정 크기로 늘리거나 줄이기
BOOL bResult = image.StretchBlt(copyImg.GetDC(), 0, 0, nIconSize, nIconSize, SRCCOPY);
// 세이브할 이미지 이름
_stprintf(szPath, 생략 );
// 이미지 세이브 : 현재 바로 입력하면 이미지가 뜨지않아 저장 후 로드한 이미지로 사용중
copyImg.Save(szPath);
Sleep(100);
img.Load(szPath);
bmp.Attach(img);
cImgList.Add(&bmp, RGB(0, 0, 0)); // 두번째 인자는 마스크로 검정색으로 해야 이미지 주변이 하얗게 나온다.
strItem.Format(_T("Pattern %d"), i);
int a = cImgList.GetImageCount();
int b = m_lcImageList.GetItemCount();
m_lcImageList.InsertItem(i, strItem, i);
copyImg.ReleaseDC();
bmp.Detach();
}
}
m_lcImageList.SetImageList(&cImgList, LVSIL_NORMAL);
아직 중간에 파일을 저장해서 다시 불러와야하는 부분 왜 그런지 모르겠지만
잘 동작하니 나중에 파해쳐보도록 하자!
댓글
댓글 쓰기