Вычисление переноса текста в методе DrawText .NET DrawingContext

Я работаю над проектом, в котором я аппроксимирую текст, отображаемый как изображение, и редактор DHTML для текста. Изображения визуализируются с помощью метода DrawText объекта .NET 4 DrawingContext.

Метод DrawText берет текст вместе с информацией о шрифте, а также с размерами и вычисляет обтекание, необходимое для того, чтобы текст максимально уместился, помещая в конце многоточие, если текст слишком длинный. Итак, если у меня есть следующий код для рисования текста в прямоугольнике, он будет сокращен:

string longText = @"A choice of five engines, although the 2-liter turbo diesel, supposedly good for 48 m.p.g. highway, is not coming to America, at least for now. A 300-horsepower supercharged gasoline engine will likely be the first offered in the United States. All models will use start-stop technology, and fuel consumption will decrease by an average of 19 percent across the A6 lineup. A 245-horsepower A6 hybrid was also unveiled, but no decision has yet been made as to its North America sales prospects. Figure later in 2012, if sufficient demand is detected.";

var drawing = new DrawingGroup();
using (var context = drawing.Open())
{
    var text = new FormattedText(longText,
        CultureInfo.CurrentCulture,
        FlowDirection.LeftToRight,
        new Typeface("Calibri"),
        30,
        Brushes.Green);
    text.MaxTextHeight = myRect.Height;
    text.MaxTextWidth = myRect.Width;

    context.DrawText(text, new Point(0, 0));
}

var db = new DrawingBrush(drawing);
db.Stretch = Stretch.None;
myRect.Fill = db;

Есть ли способ вычислить, как текст будет обернут? В этом примере выводимый текст заключен в "2-литровый" alt text

6
задан t3rse 19 January 2011 в 23:57
поделиться