ディスプレイが一台のとき(あるいはプライマリディスプレイを対象とするとき)は、Screen.PrimaryScreenプロパティにより、ディスプレイの大きさ(範囲、領域)をピクセル単位で取得できます。
'ディスプレイの高さ Dim h As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height 'ディスプレイの幅 Dim w As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width '結果表示 Console.WriteLine("ディスプレイの高さ:{0}ピクセル", h) Console.WriteLine("ディスプレイの幅:{0}ピクセル", w)
//ディスプレイの高さ int h = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height; //ディスプレイの幅 int w = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width; //結果表示 Console.WriteLine("ディスプレイの高さ:{0}ピクセル", h); Console.WriteLine("ディスプレイの幅:{0}ピクセル", w);
補足:.NET Framework 2.0以降のVB.NETでは、My.Computer.ScreenプロパティでSystem.Windows.Forms.Screen.PrimaryScreenと同じことができます。
ディスプレイが複数ある場合は、Screen.AllScreensプロパティを使ってすべてのディスプレイを取得することができます。
すべてのディスプレイのデバイス名と範囲(左上の座標と、大きさ)を列挙する例を以下に示します。
'すべてのディスプレイを列挙する Dim s As System.Windows.Forms.Screen For Each s In System.Windows.Forms.Screen.AllScreens 'ディスプレイのデバイス名を表示 Console.WriteLine("デバイス名:{0}", s.DeviceName) 'ディスプレイの左上の座標を表示 Console.WriteLine("X:{0} Y:{1}", s.Bounds.X, s.Bounds.Y) 'ディスプレイの大きさを表示 Console.WriteLine("高さ:{0} 幅:{1}", s.Bounds.Height, s.Bounds.Width) Next
//すべてのディスプレイを列挙する foreach (System.Windows.Forms.Screen s in System.Windows.Forms.Screen.AllScreens) { //ディスプレイのデバイス名を表示 Console.WriteLine("デバイス名:{0}", s.DeviceName); //ディスプレイの左上の座標を表示 Console.WriteLine("X:{0} Y:{1}", s.Bounds.X, s.Bounds.Y); //ディスプレイの大きさを表示 Console.WriteLine("高さ:{0} 幅:{1}", s.Bounds.Height, s.Bounds.Width); }
指定したフォームを保持しているディスプレイを取得するには、Screen.FromControlメソッドを使います。このメソッドは、指定されたコントロールの最大部分を保持するディスプレイを表すScreenオブジェクトを返します。コントロールがどのディスプレイにも保持されていない場合は、一番近いディスプレイが返されます。
以下の例では、自分自身のフォームがあるディスプレイを取得してから、さらにその大きさを取得しています。
'現在フォームが存在しているディスプレイを取得 Dim s As System.Windows.Forms.Screen = _ System.Windows.Forms.Screen.FromControl(Me) 'ディスプレイの高さと幅を取得 Dim h As Integer = s.Bounds.Height Dim w As Integer = s.Bounds.Width
//現在フォームが存在しているディスプレイを取得 System.Windows.Forms.Screen s = System.Windows.Forms.Screen.FromControl(this); //ディスプレイの高さと幅を取得 int h = s.Bounds.Height; int w = s.Bounds.Width;
フォームのあるディスプレイの大きさを取得するだけであれば、Screen.GetBoundsメソッドを使用することもできます。
以下の例では、上の例と全く同じことをしています。
'現在フォームが存在しているディスプレイの高さと幅を取得 Dim h As Integer = System.Windows.Forms.Screen.GetBounds(Me).Height Dim w As Integer = System.Windows.Forms.Screen.GetBounds(Me).Width
//現在フォームが存在しているディスプレイの高さと幅を取得 int h = System.Windows.Forms.Screen.GetBounds(this).Height; int w = System.Windows.Forms.Screen.GetBounds(this).Width;
ディスプレイの作業領域を取得するには、Screen.WorkingAreaプロパティを使います。作業領域とは、MSDNによると、「ディスプレイのデスクトップ領域からタスクバー、ドッキングされたウィンドウ、およびドッキングされたツールバーを除いた部分です。」とのことです。
以下の例では、プライマリディスプレイの作業領域を取得しています。
'プライマリディスプレイの作業領域の高さと幅を取得 Dim h As Integer = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height Dim w As Integer = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width
//プライマリディスプレイの作業領域の高さと幅を取得 int h = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height; int w = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;
フォームのあるディスプレイの作業領域を取得するだけであれば、Screen.GetWorkingAreaメソッドを使うこともできます。
以下の例では、自分自身のフォームが存在しているディスプレイの作業領域を取得しています。
'フォームが存在しているディスプレイの作業領域の高さと幅を取得 Dim h As Integer = System.Windows.Forms.Screen.GetWorkingArea(Me).Height Dim w As Integer = System.Windows.Forms.Screen.GetWorkingArea(Me).Width
//フォームが存在しているディスプレイの作業領域の高さと幅を取得 int h = System.Windows.Forms.Screen.GetWorkingArea(this).Height; int w = System.Windows.Forms.Screen.GetWorkingArea(this).Width;
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。