Я использую XTextFormatter или нет, я получаю ту же ошибку, что и LayoutRectangle должен иметь высоту 0 или что-то вроде этого.PdfSharp: проблема с высотой текста/позиционированием
new PdfSharp.Drawing.Layout.XTextFormatter(_gfx).DrawString(text
, new PdfSharp.Drawing.XFont(fontName, fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle)
, new PdfSharp.Drawing.XSolidBrush(PdfSharp.Drawing.XColor.FromArgb(foreColour))
, new PdfSharp.Drawing.XRect(new PdfSharp.Drawing.XPoint(xPos, yPos), new PdfSharp.Drawing.XPoint(xLimit, yLimit))
, PdfSharp.Drawing.XStringFormats.Default);
FontStyle имеет тип System.Drawing.FontStyle foreColour имеет тип System.Drawing.Color Я уже предопределенного _gfx из PdfPage с Ориентация = Пейзаж, Размер = Письмо xPos и yPos являются параметрами типа double, то же самое с xLi mit и yLimit.
Я получаю сообщение об ошибке выполнения, что LayoutRectangle должен иметь высоту ноль (0) ...
По определению это означает, прямоугольник, чтобы иметь высоту , иначе назовем это строкой! Я не понимаю!
Я попытался с помощью метода XGraphics.DrawString(), и я получаю ту же ошибку. Кажется, что я не могу использовать LayoutRectangle, но мне нужно управлять тем, что текст вписывается в нужную область вручную.
var textFont = new PdfSharp.Drawing.XFont(fontName, fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle);
while (xPos + _gfx.MeasureString(text, textFont).Width > xLimit)
textFont = new PdfSharp.Drawing.XFont(fontName, --fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle);
while (yPos + _gfx.MeasureString(text, textFont).Height > yLimit && fontSize > 0)
textFont = new PdfSharp.Drawing.XFont(fontName, --fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle);
_gfx.DrawString(text
, textFont
, new PdfSharp.Drawing.XSolidBrush(PdfSharp.Drawing.XColor.FromArgb(foreColour))
, new PdfSharp.Drawing.XPoint(xPos, yPos));
Хотя значение переменной yPos является точно таким же значением!
* YPos = Page.Height * .4093, либо 40,93% от высоты страницы *
При этом пример того, что я пытаюсь сделать:.
«Hello World !» «Привет Мир!»
И вот что я получаю: "Hello World!"
"Hello World!"
И из-за разных границ области печати и размера шрифта и другого стиля шрифта я не могу просто написать их в одно простое предложение, включая правильное количество пробелов.
Свойство XLineAlignment фактически демонстрируется только в примере ** Graphics **, а не в образце TextLayout. Должно быть, это должно быть в образце TextLayout, но эй! – noelicus
@noelicus: Правильно, образец TextLayout показывает, как текст макета без XLineAlignment. Вопрос касался макета текста. В образце Graphics также показаны способы компоновки текста с использованием XLineAlignment. –