F.R.I.D.A.Y.

DirectWrite - IDWriteFactory 본문

DEV/Direct2D

DirectWrite - IDWriteFactory

F.R.I.D.A.Y. 2021. 4. 21. 18:09
반응형

 Direct2D에서 텍스트 출력을 시행하기 전, 필요한 리소스를 생성할 수 있는 인터페이스


IDWriteFactory

 IUnknown 인터페이스로부터 상속받았기 때문에, 종종 IUnknown 으로 캐스팅해 넘길 때가 있습니다.

 

CreateTextFormat

 텍스트 레이아웃을 위한 객체를 생성합니다. 여기에서 텍스트 레이아웃이란 텍스트를 그릴 영역의 크기를 의미합니다. 만일 이 레이아웃의 크기보다 그리게 되는 텍스트의 크기가 큰 경우에는 알맞게 조정됩니다. 단, 영역 외로 그리지 못하게 했다면 해당 영역에 그려지는 부분만 화면에 노출됩니다.

 이런 식의 텍스트를 그린다고 했을 때, 빨간 색 영역만큼을 텍스트 레이아웃으로 정하게 한 뒤, 문자열을 그리게 하면, ex의 일부만 나오게 되는 것입니다.

 이렇게 말이죠.

 

 함수 원형
HRESULT CreateTextFormat(
  WCHAR const           *fontFamilyName,
  IDWriteFontCollection *fontCollection,
  DWRITE_FONT_WEIGHT    fontWeight,
  DWRITE_FONT_STYLE     fontStyle,
  DWRITE_FONT_STRETCH   fontStretch,
  FLOAT                 fontSize,
  WCHAR const           *localeName,
  IDWriteTextFormat     **textFormat
);
fontFamilyName

 폰트 이름입니다.

 

fontCollection

 만들게 되는 폰트를 저장할 컬렉션인 듯하다.[# 자세한건 알아봐야 할 듯]

 

fontWeight
fontStyle
fontStretch

폰트의 폭, 스타일, 늘이기 정도[# 만일 '-' 이란 문자를 두 배 만큼 늘이게 되면 '--'가 출력하는 길이만큼 '-' 문자가 늘어지는 것이라 보면 된다]

 

fontSize

폰트의 크기. DIPs 를 기준으로 생성한다. 물리 픽셀 단위가 아니다. 따라서 프로그램을 DIPs에 반응하도록 구성하지 않았다면 아래 포스트에서 제기하는 추가 문제에서 크기가 달라지는 상황이 발생할 수 있다.

 

GetWindowRect vs GetClientRect

GetWindowRect와 GetClientRect 함수의 차이를 알아봅니다. 윈도우의 구성 윈도우는 다음과 같이 구성되어 있습니다.  Windows에서 제공하는 테두리와 실제 개발자가 작성하고 관리하는 클라이언트 영역,

pang2h.tistory.com

 

localeName

지역명이다. 한국은 ko-kr로 설정하면 될 듯.

 

textFormat

해당 함수로 만들어진 텍스트 레이아웃을 저장할 포인터의 주소를 가진다.

 

# index

728x90
반응형
Comments