문자열을 인쇄 할 때 미리 지정된 키워드에 특별한 서식을 적용하는 함수를 작성했습니다. 예를 들어, 문자열에서 - "왜 작동하지 않습니까?" "왜"라는 단어에 밑줄이 그어져 있고 파란색으로 인쇄해야 할 수도 있습니다.C#으로 프래그먼트 할 때 단일 경계 사각형 내에 여러 문자열 조각을 올바르게 배치하려면 어떻게해야합니까?
인쇄 할 별도의 호출로 문자열의 각 세그먼트를 인쇄하여이를 구현해야했습니다. 이 접근법은 하나의 문제와 함께 작동합니다 - 문자열을 인쇄 할 때 정확한 간격을 얻을 수 없습니다. 내 키워드는 이전 기본 텍스트의 맨 위에 인쇄되며 이후에 인쇄 된 텍스트로 차례로 중복됩니다.
테두리를 사용하여 인쇄 된 페이지에 내 문자열을 배치하고 있습니다.
RectangleF rectKeywordBounds = new RectangleF(60.0, 60.0, 550.0, 1200.0);
내가 문자열의 세그먼트를 인쇄하면, 내가 그려 문자의 숫자로 사각형의 크기를 수정하고 나는 문자열의 다음 세그먼트를 인쇄 할 수 있습니다.
EArgs.Graphics.DrawString(strFragment, fontBlueItalics, Brushes.Blue, rectKeywordBounds);
iLastPrintIndex = strFragment.Length + iLastPrintIndex;
나는 새 문자열 세그먼트의 인쇄 위치 변경하려면이 방법을 사용했습니다 :
rectKeywordBounds = new Rectangle(rectKeywordBounds .X + iLastPrintIndex, rectKeywordBounds .Y, rectKeywordBounds .Width, rectKeywordBounds .Height);
을 그리고 나는이 하나 사용했습니다 :
properSpacing = new SizeF(-((float)iLastPrintIndex), 0.0f);
rectKeywordBounds .Inflate(properSpacing);
두 가지 방법이 결과를 동일한 세그먼트 겹침. 다음 코드는 내가 기대하는 방식으로 경계 사각형을 앞으로 나아가므로 사각형 내에서 텍스트를 인쇄 할 때 개념이 왜 작동하지 않습니까?
Rectangle rectKeywordBounds = new Rectangle(90, 90, 800, 100);
for (int x = 0; x < 6; x++)
{
EventArgs.Graphics.DrawRectangle(Pens.BlueViolet, rectKeywordBounds);
rectKeywordBounds = new Rectangle(rectKeywordBounds .X + 15, rectKeywordBounds .Y + 200, rectKeywordBounds .Width, rectKeywordBounds .Height);
}
감사합니다. itowlson. 그 트릭을 마쳤습니다! – GFalcon