그래픽 출력
그래픽 출력도 문자열 출력과 같은 방법과 다르지 않다.
몇가지 그래픽 출력 함수를 소개 하겠다.
COLORREF SetPixel(hdc,nXPos,nYPos,clrref)
DWORD MoveTOEx(hdc,x,y,lpPoint);
BOOL LineTo(hdc,x,y,lpPoint);
BOOL Rectangle(hdc,nLeftRect,nTopRect,nRightRect,nBoottomRect);
BOOL Ellipse(hdc,nLeftRect,nTopRect,nRightRect,nBoottomRect);
SetPixel함수는 화면에 점을 출력 한다. 2 3번째 인자는 좌표 clrref는 색상을 지정한다.
선을 그을 때는 MoveToEx함수와 LineTo 함수를 같이 사용해야한다.
MoveToEx함수로 시각점을 찍는다.
LineTo함수로 끝점까지 선을 긋는다.
Rectangle은 사각형을 그리는데. 전 예제의 사각형을 이용해 문장을 출력하는데... 그것과 같은 이치다.
Ellipse도 Rectangle과 같다 단지 원을 그릴뿐.
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_Inst;
LPCTSTR lpszClass=TEXT("GFP GraphOut");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_Inst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nShowCmd);
while(GetMessage(&Message,NULL,0,0)){
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
switch(iMessage){
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
SetPixel(hdc,10,10,RGB(255,0,0)); //10 10좌표에 붉은점 찍는다
MoveToEx(hdc,50,50,NULL); //좌표를 50 50으로 이동
LineTo(hdc,300,90); //현 자표에서 (50 50) 300 90까지 선을 그어라
Rectangle(hdc,50,100,200,180); //50 100좌표를 기준점으로 200 180을 끝점으로 하는 사각형을 그린다
Ellipse(hdc,200,100,400,200); //위와 같다 하지만 원을 그릴뿐
EndPaint(hWnd,&ps);
return 0;
}
return (DefWindowProc(hWnd,iMessage,wParam,lParam));
}
결과는 다음과 같습니다. 빨간점은 잘
'Computer > Win API' 카테고리의 다른 글
WinApi input WM_CHAR (0) | 2010.07.17 |
---|---|
WinApi MessageBox (0) | 2010.07.17 |
WinApi DrawText (0) | 2010.07.15 |
WinApi DC 예제 (0) | 2010.07.15 |
WinApi 예제1의 확장 (0) | 2010.07.15 |