3
화면에 텍스트 레이아웃을 지정할 수있는 코드를 완성하려고합니다.GDI + MeasureString() 잘못 텍스트 바꿈
string[] s = new string[] { "Sample text ", "to test", " this layout ", "algorithm" };
PointF[] pts = new PointF[s.Length];
PointF start = new PointF(10, 10);
StringFormat f = new StringFormat(StringFormat.GenericTypographic);
float x = start.X;
float y = start.Y;
for (int i = 0; i < pts.Length; i++)
{
pts[i] = new PointF(x, y);
SizeF sz = e.Graphics.MeasureString(s[i], Font, pts[i], f);
x += sz.Width;
e.Graphics.DrawString(s[i], Font, Brushes.Black, pts[i]);
}
그것은 이전과 s
배열에있는 텍스트의 각 조각 후 공백을 트리밍을 제외하고 제대로 작동 : 그렇지 않으면 빈 윈도우 폼의 Paint
이벤트 처리기에 배치 다음 C# 코드는 예입니다. 이 레이아웃 알고리즘을
을 테스트
샘플 텍스트를하지만 대신은 다음과 같이 나타납니다 : 그것은 다음과 같이 표시되어야합니다
샘플 textto testthis layoutalgorithm
내가 가진
f.Trimming
속성이None
으로 설정되어 있음을 확인했습니다. 문자열의 측정에 후행 공백을 추가 할 것으로 추측했지만, 여전히 공백을 제거합니다.MeasureString
메서드를 만드는 방법에 대한 아이디어는 공백을 포함합니까? 달리 커닝은 완벽하게 처리됩니다.
완벽! 그게 내가 필요한 것입니다. 감사. – user1476997