컴퓨터 공부/Win32 API 프로그래밍

[4월 30일 2교시] 그래픽3

려리군 2009. 4. 30. 16:16

가변비율

BOOL SetWindowExtEx(HDC, int, int, LPSIZE);

논리적인 우측 하단 값 설정.

BOOL SetViewportExtEx(HDC, int, int, LPSIZE);

실제 윈도우 창의 우측 하단 값 설정.


※ 선이나 면 부분만 확대가 됨.


예제)

SetMapMode(hDC,MM_ANISOTROPIC);

SetWindowExtEx(hDC,x,y,NULL);

SetViewportExtEx(hDC,x',y',NULL);

그림에 사용하는 좌표(논리) x,y는 x',y'좌표로 확대 혹은 축소 되어 출력된다.


비트맵

File -> New -> Files -> Resource script 선택.

Insert/Resource -> Import -> 준비한 비트맵 파일 선택.


소스

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

HDC hDC,hMemDC;

PAINTSTRUCT ps;

static HBITMAP hBitmap,hOld;


switch(iMessage)

{

case WM_CREATE:

LPCREATESTRUCT lpcs;

lpcs = (LPCREATESTRUCT)lParam;

hBitmap = LoadBitmap(lpcs->hInstance,MAKEINTRESOURCE(IDB_BITMAP1));


return 0;

case WM_PAINT:

hDC = BeginPaint(hWnd,&ps);

hMemDC = CreateCompatibleDC(hDC);


hOld = (HBITMAP)SelectObject(hMemDC,hBitmap);

BitBlt(hDC,0,0,542,553,hMemDC,0,0,SRCCOPY);

SelectObject(hMemDC,hOld);


DeleteDC(hMemDC);

EndPaint(hWnd,&ps);

return 0;

case WM_DESTROY:

DeleteObject(hBitmap);

PostQuitMessage(0);

return 0;

}

return DefWindowProc(hWnd,iMessage,wParam,lParam);

}