C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ¥の印刷方法を教えてください。


(過去ログ 110 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■65602 / inTopicNo.1)  ¥の印刷方法を教えてください。
  
□投稿者/ 裕猫 (42回)-(2013/03/11(Mon) 14:03:10)

分類:[C#] 

OS: Windows7
言語: VisualStudio2010 C#

基本的なことで申し訳ないのですが、金額のところに¥を印刷したいのですが
int TT2 = 258;
label4.Text = (char)92 + " " + TT2.ToString();
とすると画面表示には ¥ 258 のように出るのですが、印刷で
e.Graphics.DrawString(label4.Text, new Font("MS Pゴシック", 12), Brushes.Black, 590, 460);
とした場合、印刷結果は \ 258 になってしまいます。どのように書いたら ¥ 258 と印刷できるでしょう?
検索しているのですが基本的過ぎるのかひっかかりません。
¥は半角全角どちらでもかまいません。 よろしくお願いいたします。

引用返信 編集キー/
■65606 / inTopicNo.2)  Re[1]: ¥の印刷方法を教えてください。
□投稿者/ 魔界の仮面弁士 (165回)-(2013/03/11(Mon) 15:05:55)
No65602 (裕猫 さん) に返信
> どのように書いたら ¥ 258 と印刷できるでしょう?
> ¥は半角全角どちらでもかまいません。

これでどうでしょう。

using (Font f = new Font("MS Gohic", 12F, FontStyle.Regular, GraphicsUnit.Point, (byte)128))
{
    e.Graphics.DrawString("\u00A5 258", f, Brushes.Black, 200, 200);
    e.Graphics.DrawString("¥ 258", f, Brushes.Black, 200, 250);
}

引用返信 編集キー/
■65608 / inTopicNo.3)  Re[2]: ¥の印刷方法を教えてください。
□投稿者/ 裕猫 (43回)-(2013/03/11(Mon) 15:28:33)
No65606 (魔界の仮面弁士 さん) に返信
> ■No65602 (裕猫 さん) に返信
>>どのように書いたら ¥ 258 と印刷できるでしょう?
>>¥は半角全角どちらでもかまいません。
>
> これでどうでしょう。
>
> using (Font f = new Font("MS Gohic", 12F, FontStyle.Regular, GraphicsUnit.Point, (byte)128))
> {
> e.Graphics.DrawString("\u00A5 258", f, Brushes.Black, 200, 200);
> e.Graphics.DrawString("¥ 258", f, Brushes.Black, 200, 250);
> }
ありがとうございます。e.Graphics.DrawStringに"¥"を書けばできるんですね。半角なら"\u00A5"と書けばいいわけですか。できました。ありがとうございました。
解決済み
引用返信 編集キー/
■65612 / inTopicNo.4)  Re[3]: ¥の印刷方法を教えてください。
□投稿者/ 魔界の仮面弁士 (167回)-(2013/03/11(Mon) 16:52:04)
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;

引用返信 編集キー/
■65617 / inTopicNo.5)  Re[4]: ¥の印刷方法を教えてください。
□投稿者/ 裕猫 (45回)-(2013/03/12(Tue) 08:44:54)
No65612 (魔界の仮面弁士 さん) に返信
> 正しいフォントであれば、バックスラッシュとならずに印刷できるはずです。
>
>>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;
勉強になりました。しっかりと覚えます。ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -