私はこれらの2つの方法について混乱しています。
私の理解では、Graphics.DrawString()はGDI +を使用し、グラフィックベースの実装ですが、TextRenderer.DrawString()はGDIを使用し、広範囲のフォントを許可し、Unicodeをサポートします。
私の問題は、小数ベースの数値をパーセンテージとしてプリンターに印刷しようとしたときです。私の調査では、TextRendererがより良い方法であると信じています。
ただし、MSDNは、「TextRendererのDrawTextメソッドは印刷ではサポートされていません。常にGraphicsクラスのDrawStringメソッドを使用する必要があります」とアドバイスしています。
Graphics.DrawStringを使用して印刷する私のコードは次のとおりです。
if (value != 0)
e.Graphics.DrawString(String.Format("{0:0.0%}", value), GetFont("Arial", 12, "Regular"), GetBrush("Black"), HorizontalOffset + X, VerticleOffset + Y);
これにより、0から1までの数値の場合は「100%」が出力され、0未満の数値の場合は「-100%」が出力されます。
私が置くとき、
Console.WriteLine(String.Format("{0:0.0%}", value));
私のprintメソッド内では、値は正しい形式(例:75.0%)で出力されるため、問題はGraphics.DrawString()内にあると確信しています。