none
プログラムからのフォント設定 RRS feed

  • 質問

  • プログラムでフォントをMS明朝に設定してもMSP明朝になって不揃いを起こします。デザインで設定すればMS明朝となって不揃いにはなりません。文字のサイズ等を実行時に変えないといけないのでデザインで設定したままでは使えません。非常に困って先に進めませんのでどなたか教えてください。お願いします。

    2014年1月31日 8:18

回答

  • gosekiten さま よろしく。

    Jitta さまのご指摘を受け、もう少し、分かり易くします。

    背景色は基本的に、フォームそのものも含め、各コントロール毎に標準値があります。
    仕組みをご理解戴ける様に、この様な書き方をしました。
    画像にラベルを重ねる場合などは Transparent 指定が利用できます。

    文字の操作は、幾つか方法があります。
    最初は、パディングを扱う関数、次にフォーマット関数の例を示します。

    ' About BackColor
    
    Me.BackColor = System.Drawing.SystemColors.Control          ' default Form
    Me.Label1.BackColor = System.Drawing.SystemColors.Control   ' default Label1
    Me.Label2.BackColor = Color.AliceBlue                       ' example 1 = Set Color by name
    Me.Label3.BackColor = Color.Transparent                     ' example 2 = Set Transparency
    
    ' About Padding
    
    Dim str As String = "1234"
    Dim strLeftBlank As String = str.PadLeft(6)   'Return:"  1234"
    Dim strRightBlank As String = str.PadRight(6) 'Return:"1234  "
    
    Dim strLeftBlankByFormat As String = System.String.Format("{0,6}", str)     'Return:"  1234"
    Dim strRightBlankByFormat As String = System.String.Format("{0,-6}", str)   'Return:"1234  "
     'notice 0 = Index of str , first arg. list (str) is 0 / 6 or -6 = + is Left , - is Right , 6 is Length
     'http://msdn.microsoft.com/ja-jp/library/txafckwd.aspx
    

    .

    • 回答としてマーク 星 睦美 2014年2月20日 5:17
    2014年2月4日 4:01
  •  たぶん、制約は、VB6 から変わってないと思う。
    「vb6 font」で検索すると、次のページが見つかりました。

    フォント処理 (Visual Basic 6.0 ユーザー向け)
    http://msdn.microsoft.com/ja-jp/library/3essdeyy(v=vs.90).aspx

    このページのツリーの親である、次のページ以下のトピックを一通り参照すると良いと思います。

    Visual Basic 6.0 ユーザー向けのヘルプ
    http://msdn.microsoft.com/ja-jp/library/kehz1dz1(v=vs.90).aspx

     Format 関数についてもページがありますが、このページの最初に「型の書式指定」へのリンクがありますので、そちらを参照すると良いでしょう。
    http://msdn.microsoft.com/ja-jp/library/wb216dct(v=vs.90).aspx

    「透明」「不透明」とは、どのような状態を言いますか?ShiroYuki_Motさんが書かれているのは、システム設定のコントロールの色です。Color には Transparent というプロパティがあるのですが、こちらの方が望んでいらっしゃるものかもしれません。
    http://msdn.microsoft.com/ja-jp/library/system.drawing.color.transparent(v=vs.90).aspx


    Jitta@わんくま同盟

    • 回答の候補に設定 星 睦美 2014年2月4日 0:08
    • 回答としてマーク 星 睦美 2014年2月20日 5:17
    2014年2月3日 13:25

すべての返信

  • フォーラム オペレーターの星 睦美です。
    gosekiten さん、投稿ありがとうございます。

    さきに投稿いただいた以下の質問と同じ質問内容と読みました。Hongliang さんからの返信がありますので、確認してみた状況など返信いただければと思います。

    ・フォント:
    http://social.msdn.microsoft.com/Forums/ja-JP/e98efc0a-af83-4422-af0b-b93e95f928d1?forum=vbgeneralja

    もし、質問の内容が前の質問とちがう場合には詳しい情報を追加いただけると分かりやすくなり、役立つ回答に結びつくと思います。
    よろしくお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2014年1月31日 8:27
  • 星様

    有難うございました。VB6の時はそんな制約がなかったので大丈夫と思っていました。兎に角VB6とことごとく違うので難儀しております。序に二つ教えて欲しいのですが、Labelはディフォルトで透明なのでしょうか。透明、不透明はどのプロパティでしょうか。二つ目は書式でVB6ではFormat("文字列","@@@@")で必要桁数以外空白ができたのですがVB2008では@の代わりに#と書いてあるのですがどうしても出来ません。Formatの前に何か記述が要るのでしょうか。VB6がWindows7や8で使えないためVB2008やVB2013に変えないといけないと思ってやっているのですがことごとく変わり、しかも余りに基本的なことばかりですので本にも書いてなく近くに聞ける人もなく非常に困っております。よろしくお願い申し上げます。

    2014年1月31日 12:36
  • Me.BackColor = System.Windows.Forms.Control.DefaultBackColor 'Show As "Control" Me.Label1.BackColor = System.Windows.Forms.Control.DefaultBackColor 'Show As "Control"

    ' 上記、分かり辛かったでしたね。 以下が指定の標準
    Me.BackColor = System.Drawing.SystemColors.Control          ' default
    Me.Label1.BackColor = System.Drawing.SystemColors.Control   ' default
    Me.Label1.BackColor = Color.AliceBlue                       ' example

    Dim str As String = "1234" Dim strLeftBlank As String = str.PadLeft(6) 'Return:" 1234" Dim strRightBlank As String = str.PadRight(6) 'Return:"1234 "

    2014年1月31日 13:39
  •  たぶん、制約は、VB6 から変わってないと思う。
    「vb6 font」で検索すると、次のページが見つかりました。

    フォント処理 (Visual Basic 6.0 ユーザー向け)
    http://msdn.microsoft.com/ja-jp/library/3essdeyy(v=vs.90).aspx

    このページのツリーの親である、次のページ以下のトピックを一通り参照すると良いと思います。

    Visual Basic 6.0 ユーザー向けのヘルプ
    http://msdn.microsoft.com/ja-jp/library/kehz1dz1(v=vs.90).aspx

     Format 関数についてもページがありますが、このページの最初に「型の書式指定」へのリンクがありますので、そちらを参照すると良いでしょう。
    http://msdn.microsoft.com/ja-jp/library/wb216dct(v=vs.90).aspx

    「透明」「不透明」とは、どのような状態を言いますか?ShiroYuki_Motさんが書かれているのは、システム設定のコントロールの色です。Color には Transparent というプロパティがあるのですが、こちらの方が望んでいらっしゃるものかもしれません。
    http://msdn.microsoft.com/ja-jp/library/system.drawing.color.transparent(v=vs.90).aspx


    Jitta@わんくま同盟

    • 回答の候補に設定 星 睦美 2014年2月4日 0:08
    • 回答としてマーク 星 睦美 2014年2月20日 5:17
    2014年2月3日 13:25
  • gosekiten さま よろしく。

    Jitta さまのご指摘を受け、もう少し、分かり易くします。

    背景色は基本的に、フォームそのものも含め、各コントロール毎に標準値があります。
    仕組みをご理解戴ける様に、この様な書き方をしました。
    画像にラベルを重ねる場合などは Transparent 指定が利用できます。

    文字の操作は、幾つか方法があります。
    最初は、パディングを扱う関数、次にフォーマット関数の例を示します。

    ' About BackColor
    
    Me.BackColor = System.Drawing.SystemColors.Control          ' default Form
    Me.Label1.BackColor = System.Drawing.SystemColors.Control   ' default Label1
    Me.Label2.BackColor = Color.AliceBlue                       ' example 1 = Set Color by name
    Me.Label3.BackColor = Color.Transparent                     ' example 2 = Set Transparency
    
    ' About Padding
    
    Dim str As String = "1234"
    Dim strLeftBlank As String = str.PadLeft(6)   'Return:"  1234"
    Dim strRightBlank As String = str.PadRight(6) 'Return:"1234  "
    
    Dim strLeftBlankByFormat As String = System.String.Format("{0,6}", str)     'Return:"  1234"
    Dim strRightBlankByFormat As String = System.String.Format("{0,-6}", str)   'Return:"1234  "
     'notice 0 = Index of str , first arg. list (str) is 0 / 6 or -6 = + is Left , - is Right , 6 is Length
     'http://msdn.microsoft.com/ja-jp/library/txafckwd.aspx
    

    .

    • 回答としてマーク 星 睦美 2014年2月20日 5:17
    2014年2月4日 4:01