none
デザイナー編集時と実行時の文字出力が変わる RRS feed

  • 質問

  • VBで「Sub Main()」から実行するWindowsアプリケーションを作成しています。
    「Sub Main()」から実行させるため、プロジェクトのプロパティの「アプリケーションフレームワーク」のチェックを外しています。
    デザイナーでFormにボタンをつけて、フォントを「MSゴシック12pt」にし、テキストに"AA-BB-CC-DD"を入れて、このテキストが1行で表示されるぎりぎりの幅にボタンを狭めます。
    「Sub Main()」にはForm.ShowDialog()だけにします。
    その状態で実行したところ、ボタンのテキストが2行表示になってしまいました。
    「アプリケーションフレームワーク」のチェックをつけて、Formをスタートアップにすればデザインと同じように表示されるのですが、「Sub Main()」からにしたいです。
    そこで、いろいろ調べて行き着いたのがSetCompatibleTextRenderingDefaultを(false)で実行すると、デザインと同じ様に画面が表示される。
    と確認できたのですが、このページの下のほうに「GDI」と「GDI+」とあり、「GDI+にパフォーマンスとローカライズに関する問題がある」と書かれているので、使いたくないなぁと思っています。

    そもそもこの、「ボタンのテキストがデザイン時は1行で、実行時には2行で表示される」のは、この「GDI」と「GDI+」に関係があるのでしょうか?
    もしそうだとすると、以下の項目はそれぞれ{「GDI」、「GDI+」}のどちらになるのでしょうか?
    ・デザイン時は?
    ・「アプリケーションフレームワーク」のチェックをつけると? また、外すと?
    ・SetCompatibleTextRenderingDefault(True)は? SetCompatibleTextRenderingDefault(False)は?

    VS2005, WinXP(SP3)
    2009年9月5日 3:05

回答

  • リンク先はドキュメントが間違っています。その後のバージョンで修正されていますが、日本語版については更に悪化しています。
    Application.SetCompatibleTextRenderingDefaultメソッドの各ドキュメントについて
    • .NET Framework 2.0英語版
      If true, new controls that support  UseCompatibleTextRendering use GDI+ for text rendering; if false, new controls use GDI+.
    • .NET Framework 2.0日本語版
      true の場合、 UseCompatibleTextRendering をサポートする新しいコントロールは、テキスト表示用の GDI+ を使用し、false の場合は、GDI+ を使用します。
    • .NET Framework 3.5英語版
      If true, new controls that support UseCompatibleTextRendering use the GDI+ based  Graphics class for text rendering; if false, new controls use the GDI based  TextRenderer class.
    • .NET Framework 3.5日本語版
      true の場合、 UseCompatibleTextRendering をサポートする新しいコントロールは、テキスト表示用の GDI を使用し、false の場合は、GDI+ を使用します。
    3.5英語版の記述が正しく、falseに指定することでGDIを使用します。
    • 回答としてマーク ykaismu 2009年9月7日 1:29
    2009年9月5日 4:39
  • リンク先はドキュメントが間違っています。その後のバージョンで修正されていますが、日本語版については更に悪化しています。
    ドキュメントフィードバックに投げておきました。
    http://social.msdn.microsoft.com/Forums/ja-JP/vddocumentsja/thread/0788af55-caa1-43f8-a467-91057a01eae2
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク ykaismu 2009年9月7日 15:03
    2009年9月7日 14:12
    モデレータ

すべての返信

  • リンク先はドキュメントが間違っています。その後のバージョンで修正されていますが、日本語版については更に悪化しています。
    Application.SetCompatibleTextRenderingDefaultメソッドの各ドキュメントについて
    • .NET Framework 2.0英語版
      If true, new controls that support  UseCompatibleTextRendering use GDI+ for text rendering; if false, new controls use GDI+.
    • .NET Framework 2.0日本語版
      true の場合、 UseCompatibleTextRendering をサポートする新しいコントロールは、テキスト表示用の GDI+ を使用し、false の場合は、GDI+ を使用します。
    • .NET Framework 3.5英語版
      If true, new controls that support UseCompatibleTextRendering use the GDI+ based  Graphics class for text rendering; if false, new controls use the GDI based  TextRenderer class.
    • .NET Framework 3.5日本語版
      true の場合、 UseCompatibleTextRendering をサポートする新しいコントロールは、テキスト表示用の GDI を使用し、false の場合は、GDI+ を使用します。
    3.5英語版の記述が正しく、falseに指定することでGDIを使用します。
    • 回答としてマーク ykaismu 2009年9月7日 1:29
    2009年9月5日 4:39
  • 佐祐理 さん

    返信ありがとうございます。
    各所で違うことが書かれていることに、不信を感じますが
    目的の「GDI+を使用しない設定方法」について解決することができました。
    2009年9月7日 1:31
  • リンク先はドキュメントが間違っています。その後のバージョンで修正されていますが、日本語版については更に悪化しています。
    ドキュメントフィードバックに投げておきました。
    http://social.msdn.microsoft.com/Forums/ja-JP/vddocumentsja/thread/0788af55-caa1-43f8-a467-91057a01eae2
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク ykaismu 2009年9月7日 15:03
    2009年9月7日 14:12
    モデレータ
  • Azulean さん

    教えていただき、また、ドキュメントフィードバックへの投稿ありがとうございました。
    2009年9月7日 15:06