2017-04-25 10 views

답변

0

, 한 문자의 폭 텍스트 상자의 폭을 분할 :

static int GetWidthInChars(int widthInPixels, Font font, Graphics g) 
{ 
    return (int) (widthInPixels/g.MeasureString ("a", font).Width); 
} 
0

나는 하나 개의 문자를 측정하는 몇 가지를 추가 것으로 나타났습니다 한 문자의 실제 너비를 부적절하게 나타내는 추가 공간.

private int CalculateMaxDescriptionLineLength() 
{ 
    Graphics g = _tb.CreateGraphics(); 
    float twoCharW = g.MeasureString("aa", _tb.Font).Width; 
    float oneCharW = g.MeasureString("a", _tb.Font).Width; 
    return (int)((float)_tb.Width/(twoCharW - oneCharW)); 
} 

나를 올바른 방향으로 인도 해준 세르게이.

+0

'TextRenderer.MeasureText'를 사용해보세요. .NET2.0은'Graphics' (GDI +) 대신'TextRenderer' (GDI)를 사용하기 때문에. 그들 사이에 차이가 있습니다. –

+0

TextRenderer를 사용했지만 문자를 측정 할 때 반올림 오류가 발생했다는 것을 SizeF가 아니라 Size를 반환한다는 사실을 알았습니다. 그 오류는 텍스트 상자 너비에 걸쳐 혼합되어 원래 질문에 대한 응답이 덜 정확하게 나타납니다. –