VC++ 2005에서 GDIPLUS 사용하기
GDI와 GDI+의 차이점
경계선을 그리는 기능과 안쪽을 칠하는 기능을 분리
선그리기 기능 : MotoTo나 LineTo가 아니라 DrawLine 사용
GDI 오브젝트를 항상 명시
알파 블렌딩 지원
미세한 제어 : 선의 패턴이나 끝부분 처리 등...
GDI+에서 사용하는 데이터형식
INT, REAL
Point, PointF, Rect, RectF
Wide Character 인코딩 : L"Hello"
GDI+ 사용방법
1. GDI+ 초기화
1) stdafx.h 의 맨 아래 줄에 다음 추가
#include "gdiplus.h"
using namespace Gdiplus;
2) Startup & Shutdown
CWinApp 파생클래스에 다음 변수 선언
class CTestApp : public CWinApp
{
...
ULONG_PTR m_gdiplusToken;
...
}
InitInstance() 및 ExitInstance()에 다음 추가
BOOL CTestApp::InitInstance()
{
...
CWinApp::InitInstance();
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
...
}
int CTestApp::ExitInstance()
{
GdiplusShutdown(m_gdiplusToken);
return CWinApp::ExitInstance();
}
2. 라이브러리 추가
Project 속성 메뉴 > 링크 > 입력 에서 추가 종속성에 "gdiplus.lib" 입력
또는
using namespace Gdiplus; 아래에
#pragma comment(lib, "gdiplus")
추가한다.
3. GDI+ 사용
void CTestApp::OnDraw(CDC* pDC)
{
Graphics g(pDC->m_hDC);
Pen pen(Color(255, 0, 0, 0), 3);
g.DrawLine(&pen, 50, 50, 500, 50);
g.DrawRectangle(&pen, 50, 100, 200, 100);
g.DrawEllipse(&pen, 300, 100, 200, 100);
g.DrawPie(&pen, 50, 250, 200, 200, 225, 90);
g.DrawArc(&pen, 300, 250, 200, 200, 225, 90);
}
댓글 1개:
정말 감사합니다
드디어 빛이 보이는군요....^^
댓글 쓰기