PdfSharp: hauteur de Texte/problème de positionnement

Si je utiliser XTextFormatter ou pas, je reçois le même message d'erreur à propos de la LayoutRectangle avoir une hauteur de 0 ou quelque chose comme ça.

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 est de type System.De dessin.FontStyle
foreColour est de type System.De dessin.Couleur
J'ai déjà prédéfinis _gfx à partir d'un PdfPage avec Orientation = Paysage, Taille = Lettre
xPos et yPos sont des paramètres de type double, la même chose avec xLimit et yLimit.


J'obtiens l'erreur d'exécution que l'
LayoutRectangle doivent avoir une hauteur d'
zéro (0)...


Par définition un rectangle est destiné à avoir une hauteur, sinon appeler une ligne! Je ne comprends pas!...

J'ai essayé avec le XGraphics.Cordon de serrage() méthode directement, et j'obtiens la même erreur. Il semble que je ne peux pas utiliser le LayoutRectangle mais ont à gérer que le texte de l'ajustement à l'intérieur de la zone souhaitée manuellement.

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));

Si le yPos valeur de la variable est exactement la même valeur!

*yPos = Page.Hauteur * .4093, soit 40,93% de la page de la hauteur.*

Ci-joint un exemple de ce que j'essaie de faire:

"Bonjour Le Monde!" "Bonjour
Monde!"

Et voici ce que j'obtiens:

                      "Hello World!" 

"Hello World!"

Et à cause de la différence de l'impression de la limite de la zone et la taille de la police et le style de police différent, je ne peux pas écrire dans une phrase simple, y compris le nombre exact de places.

OriginalL'auteur Will Marcouiller | 2009-08-27