[Atelier Blue アトリエブルー]HomeプログラミングManaged DirectX3D>ディスプレイモードの列挙

ディスプレイモードの列挙

フルスクリーンモードを利用するときその環境で利用できるディスプレイモードをしっかりと確認しなければなりません。

列挙の仕方

foreach(DisplayMode dm in Manager.Adapters[0].SupportedDisplayModes)
{
    string str = 
        dm.Width.ToString() +" : " + dm.Height.ToString() +" : " 
        + dm.Format.ToString() +" : "+ dm.RefreshRate.ToString();

    this.listBox1.Items.Add(str);
}

ディスプレイモードはManager.Adapters[利用するアダプタ番号].SupportedDisplayModesにあります。ここから、foreachで全てのモードを取り出せます。

サンプル

その環境の0番アダプタで利用できるディスプレイモードを列挙します。

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

namespace AdapterList
{
    /// <summary>
    /// Form1 の概要の説明です。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.ListBox listBox1;
        /// <summary>
        /// 必要なデザイナ変数です。
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Windows フォーム デザイナ サポートに必要です。
            //
            InitializeComponent();

            //
            // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
            //
        }

        /// <summary>
        /// 使用されているリソースに後処理を実行します。
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if(components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows フォーム デザイナで生成されたコード
        /// <summary>
        /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディタで変更しないでください。
        /// </summary>
        private void InitializeComponent()
        {
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.SuspendLayout();
            //
            // listBox1
            //
            this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.listBox1.ItemHeight = 12;
            this.listBox1.Location = new System.Drawing.Point(0, 0);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(292, 268);
            this.listBox1.TabIndex = 0;
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Controls.Add(this.listBox1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }
        #endregion 
        private void Form1_Load(object sender, System.EventArgs e)
        {
            //重要なのはここ
            foreach(DisplayMode dm in Manager.Adapters[0].SupportedDisplayModes)
            {
                string str = 
                   dm.Width.ToString() +" : " + dm.Height.ToString() +" : " 
                   + dm.Format.ToString() +" : "+ dm.RefreshRate.ToString();

                this.listBox1.Items.Add(str);
            }
        }

        public static void Main(string []argv)
        {
            Application.Run(new Form1());
        }
    }
}


ページの一番上へ
前のページへ 一覧に戻る 次のページへ
初版2006-3-11
[Atelier Blue アトリエブルー]HomeプログラミングManaged DirectX3D>ディスプレイモードの列挙