Graphics.DrawString () vs TextRenderer.DrawText ()

Я запутался в этих двух методах.

Насколько я понимаю, Graphics.DrawString () использует GDI + и является реализацией на основе графики, а TextRenderer.DrawString ( ) использует GDI, позволяет использовать широкий диапазон шрифтов и поддерживает Unicode.

Моя проблема заключается в том, что я пытаюсь распечатать десятичные числа в виде процентов на принтере. Мои исследования заставили меня поверить, что TextRenderer - лучший способ.

Однако MSDN сообщает: «Методы DrawText TextRenderer не поддерживаются для печати. ​​Вы всегда должны использовать методы DrawString класса Graphics».

Мой код для печати с использованием Graphics.DrawString:

if (value != 0)
    e.Graphics.DrawString(String.Format("{0:0.0%}", value), GetFont("Arial", 12, "Regular"), GetBrush("Black"), HorizontalOffset + X, VerticleOffset + Y);

Это печатает «100%» для числа от 0 до 1 и «-100%» для чисел ниже нуля.

Когда я помещаю

Console.WriteLine(String.Format("{0:0.0%}", value));

в свой метод печати, значение выводится в правильном формате (например: 75,0%), поэтому я почти уверен, что проблема заключается в Graphics.DrawString ().

7
задан Kiquenet 28 December 2013 в 10:09
поделиться