|
■No65608 (裕猫 さん) に返信
>>これでどうでしょう。
ごめんなさい。間違えました。
>>using (Font f = new Font("MS Gohic", 12F, FontStyle.Regular, GraphicsUnit.Point, (byte)128))
using (Font f = new Font("MS Gothic", 12F, FontStyle.Regular, GraphicsUnit.Point, (byte)128))
に変更してください。
「MS Gothic」というフォントはありますが、
「MS Gohic」というフォントはありません。先のサンプルを差し替えておいてください。
正しいフォントであれば、バックスラッシュとならずに印刷できるはずです。
e.Graphics.DrawString("\u00A5 258", f, Brushes.Black, 200, 200);
e.Graphics.DrawString("¥ 258", f, Brushes.Black, 200, 250);
e.Graphics.DrawString(@"\ 258", f, Brushes.Black, 200, 300);
e.Graphics.DrawString("\\ 258", f, Brushes.Black, 200, 350);
e.Graphics.DrawString("\u005C,\u00A5,\uFFE5", f, Brushes.Black, 200, 400);
> e.Graphics.DrawString(label4.Text, new Font("MS Pゴシック", 12), Brushes.Black, 590, 460);
まず、「GdiCharSet」を指定していないのが問題です。
128(日本語フォント)を指定しておきましょう。
また、Font は使用後に破棄する必要がありますので、new で作成したのであれば
Dispose に相当する処理も必要です。私のサンプルでは using を利用しています。
もう一つ。これが最大の問題ですが、指定すべきフォント名は
"MS Pゴシック" (もしくは、英語名の "MS PGothic") であって、
"MS Pゴシック"ではありません。正しい名前を指定しなかったために、
代替フォントで描画されてしまい、バックスラッシュ表記になったのでしょう。
参考までに、GdiCharSet に指定する値について。
const byte ANSI_CHARSET = 0;
const byte DEFAULT_CHARSET = 1;
const byte SYMBOL_CHARSET = 2;
const byte SHIFTJIS_CHARSET = 128;
const byte HANGEUL_CHARSET = 129;
const byte HANGUL_CHARSET = 129;
const byte GB2312_CHARSET = 134;
const byte CHINESEBIG5_CHARSET = 136;
const byte OEM_CHARSET = 255;
const byte JOHAB_CHARSET = 130;
const byte HEBREW_CHARSET = 177;
const byte ARABIC_CHARSET = 178;
const byte GREEK_CHARSET = 161;
const byte TURKISH_CHARSET = 162;
const byte VIETNAMESE_CHARSET = 163;
const byte THAI_CHARSET = 222;
const byte EASTEUROPE_CHARSET = 238;
const byte RUSSIAN_CHARSET = 204;
const byte MAC_CHARSET = 77;
const byte BALTIC_CHARSET = 186;
|