본문 바로가기
C & C++/MFC Media

CListCtrl 에 이미지(tga, png, jpg, tif, bmp) 컨트롤 하기

by izen8 2011. 4. 28.
반응형


ImageCtrl.zip


왼쪽의 리스트 컨트롤에 이미지를 등록하고, 더블 클릭하면 오른쪽의 창에 띄우기.

지원하는 포멧은 tga, png, jpg, tif, bmp 이다. Gdiplus 를 이용했다.

왼쪽 CListCtrl 대신에 CImageListControl 를 사용해야하고, 오른쪽은 IDC_STATIC 인데..
CImageArea로 선언해야 한다.

---------------------------------------------------------------------------------------------- 

어디선가 받은 오픈소스인데 세팅하는 방법이 너무 복잡해서,

CListCtrl 상속을 받아서 외부에서 선언만 하면 띄울수 있게 만들었다.

#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib, "gdiplus.lib");
static ULONG_PTR m_gdiplusToken;

void Init()

{

if (m_gdiplusToken)
  return;

 GdiplusStartupInput gdiplusStartupInput;
 GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

}

 

void Shutdown()

{

 if (!m_gdiplusToken)
  return;

 GdiplusShutdown(m_gdiplusToken);
 m_gdiplusToken = NULL;

}

 

Bitmap img( A2W(strPath) );

// 사이즈 변경
Bitmap* pThumbnail =
    static_cast<Bitmap*>(img.GetThumbnailImage(m_sizeWidth, m_sizeHeight, NULL, NULL));
   pThumbnail->GetHBITMAP(NULL, &hBmp);

 

CBitmap* pImage = new CBitmap();

pImage->Attach(hBmp);

 ///////////////////////////////////////////////////////////////////////////////////////////////////

SimpleImage.zip


Visual C++ MFC 샘플

SimpleImage 샘플에서는 CImage 클래스를 사용하여 .bmp, .gif, .jpg 및 .png 등의 다양한 이미지 형식을 로드하고 표시하고 저장하는 방법을 보여 줍니다. 또한, CImage를 사용하여 이미지를 다양한 방식으로 조작하는 방법과 이미지에 대한 정보를 추출하는 방법을 보여 줍니다. SimpleImage에서는 CFileDialog 클래스를 사용하여 다양한 형식의 파일을 로드하고 저장하는 데 사용할 수 있는 표준 Windows 대화 상자를 표시합니다. 이 샘플에서는 CToolBar 클래스를 사용하여 도킹 도구 모음을 만듭니다. 이 도구 모음에는 이미지 크기를 조정할 수 있는 여러 개의 단추가 표시됩니다.

샘플 빌드 및 실행

SimpleImage샘플을 빌드하고 실행하려면

  1. 솔루션 파일인 SimpleImage.sln을 엽니다.
  2. 빌드 메뉴에서 빌드를 클릭합니다.
  3. 디버그 메뉴에서 디버깅하지 않고 시작을 클릭합니다.

이 샘플은 다음 작업이 가능한 간단한 응용 프로그램입니다.

  • 디스크에서 다양한 형식의 이미지 로드
  • 이미지 크기 조정 및 컬러에서 회색조로 변환
  • 여러 가지 이미지 형식으로 이미지 저장
반응형

댓글