[MFC]GDI+(안티얼라이징,jpg,bmp)사용방법 VC

vc2008을 배우고 있는데 참 좋은 것을 알았습니다.
안티얼라이징도 되고, JPG파일도 열수 있는 손쉬운 방법!GDI+

사용방법은 lib링크도 필요하고 각 cpp에 헤더를 넣어줘야 하지만,
손쉽게 한번에 끝내는 방법이 있습니다.
stdafx.h파일의 제일 밑에다가

#include <gdiplus.h>               
using namespace Gdiplus;              //  Gdiplus:: 을 매번 붙이고 싶지 않다면...
#pragma comment(lib, "gdiplus.lib")  // The GDI+ lib  --> 위의 과정이 싫다면 이 줄을 추가 한다.

이 세줄을 추가 하세요.(물론 주석잡힌곳은 쓰지 말아주세요;;)

App에 가셔서 InitInstance()위에
ULONG_PTR gdiplusToken;
를 작성하시고(함수 밖입니다.)
 
함수 안에

BOOL CSplitterApp::InitInstance()
{
     INITCOMMONCONTROLSEX InitCtrls;
     InitCtrls.dwSize = sizeof(InitCtrls);
     // 응용 프로그램에서 사용할 모든 공용 컨트롤 클래스를 포함하도록
     // 이 항목을 설정하십시오.
     InitCtrls.dwICC = ICC_WIN95_CLASSES;
     InitCommonControlsEx(&InitCtrls);
     CWinApp::InitInstance();

    //<<--여기서 부터
     GdiplusStartupInput gdiplusStartupInput;
     if (::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL) != Ok)
     {
       AfxMessageBox(TEXT("ERROR: Failed to initialize GDI+ library!"));
       return FALSE;
     }

    //여기까지 작성-->>

그리고 해제하는 코드를 ExitInstance()에 작성합니다.
int CSplitterApp::ExitInstance()
{
  // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
  ::GdiplusShutdown(gdiplusToken);

이제 View창에서 OnPaint()함수에 그려줄 이미지를 지정해 줍니다.
void CxxxView::OnPaint()
{
  CPaintDC dc(this); // device context for painting

  Graphics graphics(dc);
  graphics.SetSmoothingMode(SmoothingModeHighQuality);
  Image image(g_strTmp);
  graphics.DrawImage(&image,0,0);

g_strTmp에는 출력할 이미지의 경로를 작성해 주면 됩니다. DrawImage()함수의 0,0은 Left, Top좌표 입니다.
이렇하면 끝!


덧글

  • 얼결에 2010/12/26 01:19 # 삭제 답글

    안녕하세요, 이글루 여기저기 왔다갔다 하다가 얼결에 들렀습니다만...

    Graphics graphics(dc);

    이거는 Graphics graphics(dc.GetSafeHdc()); 이렇게 해야 될겁니다.

    아니면, VC2008 에서는 GDI+가 MFC를 지원하는건가요?
  • 도야지 2010/12/28 10:36 # 답글

    네 2008은 GDI+자체를 지원하고 있습니다. ^^
  • 도야지 2010/12/28 10:38 # 답글

    첫댓글 감사합니다. ^^
  • 도야지 2010/12/30 10:54 # 답글

    2005도 되는군요..
댓글 입력 영역