OS/Windows API

#8 Windows API (GDI+) 이미지 뿌리기

VallistA2014. 8. 26. 11:50

첨부 파일 : 이미지 뿌리기


이미지 뿌리기.zip



이번에는 저번 강좌의 선, 사각형, 원에 이어서 이미지를 뿌리겠습니다.


우리가 이미지를 뿌릴때는 Bitmap을 쓰는 방법과 GDI+를 쓰는 방법이 있습니다.

먼저 GDI+를 사용하는 방법에 대해 배워봅시다.


먼저 쓰기전에 GDI가 뭐하는 놈인가에 대해서 알아볼 필요성이 있습니다.


GDI란?


Graphics Device Interface 의 약자로, 마이크로소프트 윈도에서 사용자 인터페이스를 위한 API가운데 하나 입니다.

최근에 들어서는 그렇게 많은 곳에 쓰지 않았으나, 예전 윈도우 XP, 98 시절에는 이 GDI를 사용하여 이미지를 뿌리고 어플리케이션을 만들었습니다.

하지만 최근의 GDI는 프레임버퍼 동기화 없이는 애니메이션을 구현할 수 없고, 3D 래스터화 지원을 하지 못하기 때문에 Direct X를 사용합니다.


Windows XP가 나오고 나서 GDI+가 대두가 되게 되었습니다.

GDI+는 C++ 기반으로 작동 되어 있으며, GDI에서 지원하지 않던 안티 에일리어싱과 부동 소수점 좌표 체계 및 그라디언트, PNG등의 포맷을 지원하게 되었습니다.


거기다 색의 표현도 ARGB 값으로 사용이 변경이 되었기 때문에 이러한 특징들을 살린 XP의 어플리케이션은 상대적으로 퀄리티가 좋게 나오게 되었습니다


그럼 이제 우리는 GDI+ 를 사용해서 이미지를 띄워보도록 하겠습니다.


GDI Plus를 사용하기 위해서는 Include를 해주어야 합니다.


#include <Gdiplus.h> 를 포함해 주세요.

using naemspace Gdiplus; 를 Using namespace 해주세요.


그 후 GDIPlus를 사용하기 위해선 .lib 파일이 필요하기 때문에 추가를 해줍시다.


#pragma comment(lib, "Gdiplus.lib") 해주시면 되겠습니다.

#include 
#pragma comment(lib, "Gdiplus.lib")
using namespace Gdiplus;

(이렇게 말이죠)

이로써 기초적인 라이브러리 포함 작업은 끝냈습니다.

우리가 이 라이브러리를 사용하기 위해선 시작 신호를 주어야 합니다. 그전에 했던 Timer 처럼요.


Init에 이렇게 써주도록 합시다. (물론 처음 한번만 들어오는 곳에 아무곳에나 해주셔도 됩니다.)

GdiplusStartupInput			m_GdiplusStartupInput;
ULONG_PTR					m_GdiplusToken;
GdiplusStartup(&m_GdiplusToken, &m_GdiplusStartupInput, NULL);


이렇게 써 주시면 되겠습니다.


이제 본격적으로 이미지를 뿌려보도록 하겠습니다.


이미지 뿌리는 방법은


Graphics graphics(hdc);
Image		image(L"0.png");
graphics.DrawImage(&image, 10, 10);

요로코놈 뿌려주시면 됩니다


==> 완료 화면




Image image(이미지 이름); 

여기서 경로는 자신의 cpp 및 h가 있는 경로입니다.

DrawImage의 경우에는 첫번재 인자에 이미지 넣어주시면 되고 두번째 인자는 x, 세번째 인자는 y 값 입니다.


자 근데, 우리가 이미지를 뿌리면 엄청 깜빡일 겁니다.

왜 깜빡일까요?


그 깜빡임을 어떻게 없앨 수 있을까요?


다음 글에서 소개하겠습니다.


(저위에 파일을 받으신분들은 깜빡이지 않을겁니다. 이미 처리를 해놓았기 때문에..)

'OS > Windows API' 카테고리의 다른 글

APIENTRY와 CALLBACK의 차이  (0) 2014.09.27
#9 Windows API 더블 버퍼링  (0) 2014.08.26
#7 Windows API 선, 사각형, 원 뿌리기  (0) 2014.08.26
#6 Windows API Timer  (1) 2014.08.26
#5 Windows API 게임의 기본 구조  (0) 2014.08.26

댓글

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.
현재는 이 블로그를 운영하지 않습니다.
vallista.kr 로 와주시면 감사하겠습니다!

자고 싶습니다. ㅠㅠ

Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today :

Total :

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment