2013-07-25 2 views
6

방금 ​​SDL2_ttf을 사용하기 시작했습니다. TTF_RenderText_Blended으로 화면에 텍스트를 가져 오는 방법을 알아 냈습니다.하지만 줄 바꿈과 자동 줄 바꿈을 수행하려면 어떻게해야합니까?SDL-TTF로 줄 바꿈 및 줄 바꿈을 수행하는 방법은 무엇입니까?

  1. \n을 지원하지 않는 것 같습니다. 그냥 줄을 추는 대신 공간을 만듭니다. 이것에 대한 지원을 추가 할 수있는 방법이 있습니까? 특히, 다른 Y 좌표에서 RenderText를 여러 번 호출하는 것이 아니라 텍스트의 적절한 선 높이를 사용합니다.
  2. X, Y 좌표와 너비가 주어지면 너비에 도달 할 때마다 단어가 자동으로 줄을 바꿀 수 있습니까?

답변

18

TTF_RenderText_Blended 대신에 TTF_RenderText_Blended_Wrapped을 사용하십시오. 추가 매개 변수가 있습니다. 픽셀 단위의 폭으로 텍스트가 다음 줄로 나뉘어집니다.

+0

표준 라이브러리의 해당 부분입니까? 그것에 관한 문서를 찾을 수 없습니다. 그것이 존재한다면, 그것은 달콤합니다. – mpen

+0

최신 SDL_ttf 내에 있습니다. 나는 적절한 문서를 찾지 못했지만 (왜 그 문서에 대한 참조가 전혀 없는지), 나는 그것이 작동한다는 것을 확신 할 수있다. – Mars

+0

VCS에 있어야하며 ..... 2.0.11 소스에는 없습니다. Hrm ... 그냥 2.0.12를 다운로드했고 거기에 있습니다. 굉장해. – mpen

2

SDL_TTF는 포장을하지 않으므로 직접 작성해야합니다.

TTF_Font* ttf; 
TTF_SizeText(ttf, "Hello World", &w, &h); 

은 문자열의 너비와 높이를 제공합니다.

+0

좀 더 깊이있는 것을 기대했지만 글꼴 관리자 클래스를 직접 작성할 수 있습니다. – mpen

+0

원한다면 어떤 코드를 사용해도됩니다. C 또는 C++? 나는 항상 긴 메시지를 몇 개의 짧은 메시지로 분할했습니다. – parkydr

+0

C#, 실제로. 나는 SDL2에 대한 래퍼를 작성하고있다. 코드를 작성할 필요가 없으며 모든 함정을 알고 싶었습니다. 내가 지금 어떻게해야 할지를 알 수없는 한 가지는 커닝입니다. – mpen