본문 바로가기
코스웨어/15년 스마트컨트롤러

20151118 22번 업무일지 우대희 API

by 알 수 없는 사용자 2015. 11. 18.
728x90
반응형
>CreateFont
폰트를 만들기 위해서는 CreateFont 함수를 사용하며 이 함수가 리턴해 주는 핸들을 HFONT형의 변수에 대입해 주면 된다.
HFONT CreateFont( int nHeight , int nWidth , int nEscapement , int nOrientation , int fnWeight,
                                    DWORD fdwItalic , DWORD fdwUnderline , DWORD fdwStrikeOut , DWORD fdwCharSet ,
                                    DWORD fdwOutputPrecision , DWORD fdwClipPrecision , DWORD fdwQuality ,
                                    DWORD fdwPitchAndFamily , LPCTSTR lpszFace ); 

개별 인수의 의미

실질적으로 변경해 주어야할 필요가 있는 인수는 문자의 크기를 지정하는 nHeight와 글꼴 모양을 지정하는 lpszFacename 정도이며 나머지 인수는 디폴트를 사용하면 일단은 큰 무리 없이 사용할 수 있다.




>Font.dsw

<폰트 오브젝트를 사용>




<LOGFONT 구조체를 사용하여 폰트를 정의하고 CreateFontIndirect 함수로 폰트를 만드는 방법>
typedef struct tagLOGFONT
{ // lf
  LONG lfHeight;
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;
LOGFONT 구조체는 CreateFont 함수의 인수 전체를 멤버 변수로 가지는 구조체이며 이 구조체에 원하는 값을 먼저 대입한 후 CreateFontIndirect 함수로 이 구조체의 번지를 넘겨주면 된다.
HFONT CreateFontIndirect( CONST LOGFONT *lplf); 
LOGFONT 구조체에서 폰트의 특성을 다 정의하므로 함수는 이 구조체의 포인터만 인수로 전달받는다.

CreateFont 함수를 사용한 것과 동일하다.
LOGFONT 구조체를 사용하는 방법은 몇가지 장점을 가지고 있다. 여러벌의 폰트 객체를 만들어야 할 때 LOGFONT의 멤버중 일부만을 변경하여 재사용할 수 있으며 또한 LOGFONT 구조체 배열을 사용하면 사용할 폰트의 목록을 미리 작성해 놓을 수도 있다.





>문자열의 색상

COLORREF SetTextColor( HDC hdc, COLORREF crColor );
SetTextColor는 Text의 Color를 Set하는 함수이며 SetBkColor은 글자 뒤쪽의 배경색상을 지정하는 함수이다.

COLORREF SetBkColor( HDC hdc, COLORREF crColor );
SetBkColor은 글자 뒤쪽의 배경색상을 지정하는 함수이다.

둘 다 COLORREF형의 인수를 취하므로 RGB 매크로 함수를 사용하여 원하는 색상을 설정하도록 한다.
두 함수의 반대 함수는 GetTextColor, GetBkColor이며 이 함수들은 현재 설정된 문자색과 배경색을 구해 준다.
문자색으로 빨간색을 주고 배경색으로 초록색을 주면 초록색 바탕에 빨간색의 글자가 출력될 것이다.

int SetBkMode( HDC hdc, int iBkMode ); 
배경색상을 사용할 방법을 설정한다.

PAQUE와 TRANSPARENT 두가지 옵션중 한가지를 선택할 수 있으며 디폴트는 OPAQUE이다.

불투명한 배경 모드를 사용한 경우는 배경의 바둑판 모양이 지워지지만 투명한 배경 모드를 사용하면 글자 사이 사이로 바둑판 모양이 그대로 남아 있는다. 비트맵이나 그림 위에 문자열을 출력한다면 투명 모드를 사용해야 할 것






>글자 회전시키기

CreateFont의 세번째 인수인 nEscapement를 변경시키면 문자열의 각도를 바꾸어 가며 회전시킬 수 있다.

CreateFont 함수의 세번째 인수인 nEscapement를 0~900까지 100단위로 증가시켜가며, 즉 각도를 10단위로 계속 증가시키며 문자열을 출력시켜 본 것이다. I값이 증가할 때마다 매번 MyFont를 만들고 출력이 끝난 후 font를 삭제하고 있다.




게임 만들기

코드 비공개 ㅋㅋ

728x90