.NET TIPS ディスプレイの解像度を取得するには?デジタルアドバンテージ2003/03/27 |
|
|
ディスプレイの解像度を取得するには、Screenクラス(System.Windows.Forms名前空間)のPrimaryScreenプロパティを取得し、さらにそのBoundsプロパティを取得すれば、ディスプレイの解像度が設定されたRectangle構造体(System.Drawing名前空間)のオブジェクトを得ることができる。実際には次にように記述できる。
Rectangle rec = Screen.PrimaryScreen.Bounds;
Rectangle構造体は、四角形領域の位置とサイズを格納するためのものだが、そのメンバのうちWidthとHeightに、ディスプレイの幅と高さが設定される。
これらのクラスを使用した実行可能なサンプル・コードを次に示す。
|
|
ディスプレイの解像度を表示するC#のサンプル・プログラム(screen.cs) | |
ScreenクラスのPrimaryScreenプロパティは、その名前からも分かるように、プライマリ・ディスプレイ(コンピュータに複数のディスプレイが接続されている場合のメインとなるディスプレイ)に関するScreenクラスのオブジェクトで、staticなプロパティとなっている。
複数のディスプレイが接続されている場合
コンピュータに複数のディスプレイが接続されている場合には、ScreenクラスのAllScreensプロパティにより、すべてのディスプレイに関するScreenオブジェクトを取得することができる(AllScreensプロパティはScreenクラスの配列)。
AllScreensプロパティを使用したサンプル・プログラムを次に示す。
|
|
すべてのディスプレイの解像度を表示するC#のサンプル・プログラム(screens.cs) | |
リスト中の出力例は筆者の環境で実行した場合のものだ。筆者のコンピュータでは、1600x1200と1280x1024の解像度の2枚のディスプレイ・カードを使用しており、次のような設定にしている。
筆者のコンピュータの画面設定 |
マルチ・ディスプレイ環境なら、ディスプレイの数だけ情報が表示される。 |
このような設定のため、リスト内の出力例では、セカンダリ・ディスプレイの位置(X、Y)が(1600,176)となっている(1200−1024=176)。
AllScreensプロパティは、次のようにして単にコンピュータに接続されたディスプレイの数を取得するためにも利用することができる。
int numDisplay = Screen.AllScreens.Length;
ただし、これによって得られる値は論理的なもので、例えばWindows XPのリモート・デスクトップ接続により接続している環境でこのコードを実行すると、numDisplayの値は1となる。
カテゴリ:Windowsフォーム 処理対象:ウィンドウ 使用ライブラリ:Screenクラス(System.Windows.Forms名前空間) 使用ライブラリ:Rectangle構造体(System.Drawing名前空間) |
|
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|