반응형
윈도에 비트맵을 띄워봅시다!
게임을 만들거나 또는 어떠한 프로그램을 만들때 비트맵은 아주 중요한 리소스 입니다.
게임에서는 캐릭터, 배경 등등 거의 모든것을... 프로그래밍에서는 보다 멋진 인터페이스를 제공할 수도 있을 것 입니다.
아무튼 이제 이미지를 출력해보도록 하겠습니다.
먼저 리소스에 비트맵을 추가합니다.
비트맵 추가하는 법
1. 리소스 파일 -> 추가 -> 리소스를 클릭합니다.
2. 리소스 추가 항목에서 Bitmap을 클릭하고 가져오기를 누릅니다.
(새로 만드셔도 됩니다만..그럴 분은 없겠죠?)
정상적으로 리소스를 추가하셨다면, "resource.h" 해더 파일과 비트맵이 추가되어 있습니다.
그 다음 아래와 같은 코드를 입력하시면 됩니다.
#include "resource.h"
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
HDC hdc,MemDC;
PAINTSTRUCT ps;
HBITMAP MyBitmap , OldBitmap;
switch (iMessage)
{
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
MemDC=CreateCompatibleDC(hdc);
MyBitmap = LoadBitmap(_hInstance , MAKEINTRESOURCE(MUZI2));
OldBitmap=(HBITMAP)SelectObject(MemDC, MyBitmap);
BitBlt (hdc , 0 , 0 , 192 , 192 , MemDC , 0 , 0 , SRCCOPY);
SelectObject(MemDC , OldBitmap);
DeleteObject(MyBitmap);
DeleteDC(MemDC);
EndPaint(hWnd , &ps);
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam));
}
다음과 같이 비트맵 출력 부분만 다른 함수로 분리한 후에 해당 함수를 호출하여도 비트맵이 출력됩니다.
가능하면 윈도우가 초기화 되는 WM_CREATE에서 비트맵은 초기화 되어야 하며 , WM_DESTROY에서 해제하는 것이 좋습니다.
void DrawBitmap(HDC hdc,int x,int y,HBITMAP hBit)
{
HDC MemDC;
HBITMAP OldBitmap;
int bx,by;
BITMAP bit;
MemDC=CreateCompatibleDC(hdc);
OldBitmap=(HBITMAP)SelectObject(MemDC, hBit);
GetObject(hBit,sizeof(BITMAP),&bit);
bx=bit.bmWidth;
by=bit.bmHeight;
BitBlt(hdc,0,0,bx,by,MemDC,0,0,SRCCOPY);
SelectObject(MemDC,OldBitmap);
DeleteDC(MemDC);
}
#include "resource.h"
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static HBITMAP MyBitmap;
switch (iMessage)
{
case WM_CREATE:
{
MyBitmap = LoadBitmap(_hInstance , MAKEINTRESOURCE(MUZI2));
break;
}
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
DrawBitmap( hdc , 0 , 0 , MyBitmap);
EndPaint(hWnd , &ps);
break;
}
case WM_DESTROY:
DeleteObject(MyBitmap);
PostQuitMessage(0);
break;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam));
}
// 결과 |
깜찍한 무지를 윈도우에서 볼 수 있습니다.
일단 기본 비트맵을 띄워 봣으니 다음에는 해당 비트맵 출력을 자세히 살펴보겠습니다.
반응형
'프로그래밍 관련 > Win API' 카테고리의 다른 글
WIndows API - #9-5 그래픽 처리 - (더블 버퍼링)(1) (0) | 2015.09.07 |
---|---|
WIndows API - #9-4 그래픽 처리 - (비트맵 출력)(2) - 코드 살펴보기 (0) | 2015.09.06 |
WIndows API - #9 -2. 그래픽 처리 (Old를 같이 쓰는 이유) (2) (0) | 2015.09.03 |
WIndows API - #9 -1. 그래픽 처리 (Old를 같이 쓰는 이유) (1) (0) | 2015.09.03 |
WIndows API - #8. 충돌 처리 (사각형 , 원형 , 마우스) - 작성 중.. (0) | 2015.09.01 |