2011-01-24 2 views
0

GDI와 비슷한 동작을하는 Direct3D의 DrawText를 사용하고 DT_WORDBREAK 포맷 플래그를 활성화하면 상황이 발생할 때마다 아포스트로피로 텍스트가 잘려 많은 제목과 텍스트가 남습니다 엉망으로 보이는 디스플레이.GDI와 Direct3D로 자극하는 텍스트

저주받은 기사 '
의 헤드

가이 말을해야 할 때 : 예를 들어,으로 표시됩니다


기수의
머리를

I 폰트 처리 함수의 제한적인 성질을 고려해 보지는 않을 것 같지만, 공백 문자 만 잘라내거나 할 수있는 것이 전혀 없을 때 그것을 지정하는 방법이 있습니까?

+0

D3DX 유틸리티 라이브러리 (ID3DXFont :: DrawText)에서? 코어 D3D에 DrawText 함수가 있다고 나는 믿지 않는다. Direct2D는 그래도 D2D의 DrawText에는이 문제가없는 것으로 보입니다. –

답변

0

나는 그렇게 생각하지 않는다 (나는 틀릴 수도있다). 그러나 너비에 "가상"제한을 설정할 수 있습니다. 줄 길이 (char_count * font_width)를 계산하고 직접 점프하십시오. 당신은 심지어 자신의 점프를 삽입하는 특수 문자 "\ n"을 추가 할 수 있습니다 ...

+1

'char_count * font_width'를 사용하는 것은 글꼴의 크기가 다양하다는 점을 감안할 때 매우 좋은 해결책은 아닙니다. – Jengerer

+1

@Jengerer : GetTextExtentPoint32와 같은 것을 사용하는 것이 옳습니다. –

+1

@codebolt : 실제로이 문제를 해결하는 데 매우 유용한 기능입니다. 그 제안을 별도의 답변으로 던질 수 있다면 가장 효율적인 해결책 인 것으로 받아 들일 것입니다. 감사! – Jengerer

1

저는 이것을 전에 실행했습니다. 유일한 해결책은 너비를 측정하기 위해 DT_CALCRECT를 사용하여 자신의 워드 래퍼를 작성하는 것입니다. 주어진 문자열의. 그것은 성가신이며 그것은 빨아,하지만 난 대안을 본 적이 없어.