最近は、GDI+自体が話題になりませんが、Winodws(Desktop)アプリを作成するとき、IDEが勝手に生成してくれます。
Program.csの中を覗くと書かれています。
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
「なんのこと」と質問がありました。
おまじないのように扱われることが多いのですか、理由があっての記述です。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.setcompatibletextrenderingdefault.aspx
FrameWork 1.x時代にGDI+が注目され、コントロールのテキスト描画もGDI+で実装されていましだ、パフォーマンスとロケールの問題で不利になり、GDIで描画するために (False) にすることにした経緯があります。
当時のパフォーマンス差を測定したとき、差があったかどうか忘却したので、再度検証してみました。
(*)記憶に残ってないのは、差がなかったからだと思う。
 public partial class Form1 : Form
    {
        string z = "kkkkkkkkkkkk....................kkkkkkkk";
        int Max = 20000;
        Stopwatch sw = new Stopwatch();
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            sw.Reset();
            sw.Start();
            for (int i = 0; i < Max; i++)
            {
                label1.Text = z;
            }
            sw.Stop();
            label2.Text="所要時間["+ sw.ElapsedMilliseconds.ToString() + "]";
        }
    }
 Application.SetCompatibleTextRenderingDefault(false); //GDIモード
と
 Application.SetCompatibleTextRenderingDefault(true); //GDI+モード
で測定したところ、殆ど同じでした。
巷に転がっている情報では「text描画のパフォーマンス向上のため TRUEにする。」となっています。
でも、最近のグラフィック回りが進んだのか、差がでません。なんか説得力に欠けます。
 速度以外にどんな不具合があったのが、資料が見つからないので不明ですが、どんな不具合だったのでしょうね。
これと、同時に生成される、
            Application.EnableVisualStyles();
も、「Windows XPスタイルの外観に変更する」ためと説明されてますが、XP自体が過去の物になりつつある昨今では、説明力に欠けます。
「XPスタイルの外観」云々自体に意味がなくなりつつありますし、外してみても差を感じませんでした。
この二つの行は、過去の名残として、おまじない扱いとして残り続けるのでしょうか。
0 件のコメント:
コメントを投稿