2016-12-21 4 views
0

여러 색상의 문자열을 그리려고합니다.TextRenderer를 사용하여 문자열의 문자를 올바르게 측정하는 방법은 무엇입니까?

이렇게 기본 방법이 없으므로 TextRenderer.DrawText를 사용하여 char에 의해 char 문자를 그려야합니다. 그러나 문자열을 측정하려고하면 첫 번째 문자 너비가 올바르게보고되지 않습니다.

char로 char을 그리려면 이전 문자 너비를 측정하는 문자열을 반복하여 그릴 다음 문자의 위치를 ​​찾으십시오.

폭을 얻으려면, 내가 사용

 TextRenderer.MeasureText(word.Substring(0, i), 
        drawFont, 
        new Size(int.MaxValue, int.MaxValue), 
        (TextFormatFlags.Left | TextFormatFlags.NoPadding)).Width 
정상적으로 작동

하지만 같은 출력을 생성 첫 번째 문자에 대한 : 하나 개의 문자가있는 경우,

 L OREMIPSUM 

기본적으로 - 그것은 측정 내 깃발에도 불구하고 패딩. 나는 몇 가지 해킹을하고있는 중이처럼 사용할 수있는 더 좋은 방법이 있어야 할 때

 TextRenderer.MeasureText(String.Concat("*", chr.ToString(), "*"), font).Width - TextRenderer.MeasureText("**", font).Width 

가 첫 번째 문자를 측정하고 올바른 폭 값을 얻을 수 있지만, 느낌 :

내가 사용할 수 있습니다.

위의 메서드에서 string을 사용하여 TextRenderer.MeasureText를 사용하지 않고도 첫 번째 문자 문제없이 올바른 결과를 얻을 수 있습니다.

내 경우에 문자를 측정하는 올바른 방법은 무엇입니까?

답변