OS/Windows API
#8 Windows API (GDI+) 이미지 뿌리기VallistA2014. 8. 26. 11:50
첨부 파일 : 이미지 뿌리기
이번에는 저번 강좌의 선, 사각형, 원에 이어서 이미지를 뿌리겠습니다.
우리가 이미지를 뿌릴때는 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 :
Lately Post
Lately Comment