.NET TIPS

ディスプレイの解像度を取得するには?

デジタルアドバンテージ
2003/03/27

 ディスプレイの解像度を取得するには、Screenクラス(System.Windows.Forms名前空間)のPrimaryScreenプロパティを取得し、さらにそのBoundsプロパティを取得すれば、ディスプレイの解像度が設定されたRectangle構造体(System.Drawing名前空間)のオブジェクトを得ることができる。実際には次にように記述できる。

Rectangle rec = Screen.PrimaryScreen.Bounds;

 Rectangle構造体は、四角形領域の位置とサイズを格納するためのものだが、そのメンバのうちWidthとHeightに、ディスプレイの幅と高さが設定される。

 これらのクラスを使用した実行可能なサンプル・コードを次に示す。

// screen.cs

using System;
using System.Windows.Forms;
using System.Drawing;

class ScreenSize {
  public static void Main() {

    Rectangle rec = Screen.PrimaryScreen.Bounds;

    Console.WriteLine(rec);
    // 出力例:{X=0,Y=0,Width=1600,Height=1200}
  }
}
// コンパイル方法:csc screen.cs
ディスプレイの解像度を表示するC#のサンプル・プログラム(screen.cs)

 ScreenクラスのPrimaryScreenプロパティは、その名前からも分かるように、プライマリ・ディスプレイ(コンピュータに複数のディスプレイが接続されている場合のメインとなるディスプレイ)に関するScreenクラスのオブジェクトで、staticなプロパティとなっている。

複数のディスプレイが接続されている場合

 コンピュータに複数のディスプレイが接続されている場合には、ScreenクラスのAllScreensプロパティにより、すべてのディスプレイに関するScreenオブジェクトを取得することができる(AllScreensプロパティはScreenクラスの配列)。

 AllScreensプロパティを使用したサンプル・プログラムを次に示す。

// screens.cs

using System;
using System.Windows.Forms;
using System.Drawing;

class ScreenSizes {
  public static void Main() {

    foreach (Screen s in Screen.AllScreens) {
      Console.WriteLine(s.Bounds);
    }
    // 出力例:
    // {X=0,Y=0,Width=1600,Height=1200}
    // {X=1600,Y=176,Width=1280,Height=1024}
  }
}
// コンパイル方法:csc screens.cs
すべてのディスプレイの解像度を表示するC#のサンプル・プログラム(screens.cs)

 リスト中の出力例は筆者の環境で実行した場合のものだ。筆者のコンピュータでは、1600x1200と1280x1024の解像度の2枚のディスプレイ・カードを使用しており、次のような設定にしている。

筆者のコンピュータの画面設定
マルチ・ディスプレイ環境なら、ディスプレイの数だけ情報が表示される。

 このような設定のため、リスト内の出力例では、セカンダリ・ディスプレイの位置(X、Y)が(1600,176)となっている(1200−1024=176)。

 AllScreensプロパティは、次のようにして単にコンピュータに接続されたディスプレイの数を取得するためにも利用することができる。

int numDisplay = Screen.AllScreens.Length;

 ただし、これによって得られる値は論理的なもので、例えばWindows XPのリモート・デスクトップ接続により接続している環境でこのコードを実行すると、numDisplayの値は1となる。End of Article

カテゴリ:Windowsフォーム 処理対象:ウィンドウ
使用ライブラリ:Screenクラス(System.Windows.Forms名前空間)
使用ライブラリ:Rectangle構造体(System.Drawing名前空間)
 
この記事と関連性の高い別の.NET TIPS
画面の色数を取得するには?
マウス・カーソルの位置を取得・設定するには?
画像のdpi(画像解像度)を取得/設定するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間