.NET TIPS 画面の色数を取得するには?[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2006/04/07 |
|
|
.NET Framework 1.xでは、「TIPS:ディスプレイの解像度を取得するには?」で説明されているように、画面(ディスプレイ)の解像度を取得するための機能が提供されていた。しかし残念ながら、画面の色数を取得することはできなかった*1。
*1 画面の色数とは(ディスプレイに映像を表示する)ビデオ・ドライバがサポートする色の数のことで、その表現方法として「ビット・パー・ピクセル(Bits Per Pixel)」という単位、つまり1ピクセル(=1つの画素)当たり何bitの色情報(=色深度:Color Depth)を持っているかを表す単位が用いられる。代表的な画面の色数としては、「256色(8bitカラー)」「ハイ・カラー(High Color。例えば16bitカラー)」「トゥルー・カラー(True Color。例えば24bitカラー、32bitカラー)」などがある。 |
このため、従来の.NET Framework 1.xで画面の色数を取得するには、Win32 APIのGetDeviceCaps関数の第2パラメータに「BITSPIXEL」というフラグを渡して呼び出す必要があったのだ(ちなみに第1パラメータには、色数を取得したいディスプレイのデバイス・コンテキスト・ハンドルを渡す)。つまり、この処理は.NET Frameworkのクラス・ライブラリだけでは気軽に実装できなかったのだ。
しかし.NET Framework 2.0では画面の色数を取得するためのプロパティが新たに追加されており、非常に簡単にこの処理を実装できるようになっている。具体的には次のプロパティが追加された。
- Screenクラス(System.Windows.Forms名前空間)のBitsPerPixelプロパティ
このプロパティは読み取り専用で、画面の色数をint型(Integer型)の数値で返す。
次のサンプル・プログラムは、このBitsPerPixelプロパティを実際に利用したコンソール・アプリケーションの例である。このプログラムは、プライマリ・スクリーン(=コンピュータに接続されているメイン・ディスプレイ)の色数を取得して、「画面の色数は<32bitカラー>です。」といったテキストを出力する。
|
||
Screen.BitsPerPixelプロパティを実際に利用したサンプル・プログラム(上:C#、下:VB) | ||
このサンプル・プログラムはコンソール・アプリケーションとして作成しているが、ScreenクラスはSystem.Windows.Forms名前空間にあるので、コンパイルには「System.Windows.Forms.dll」への参照が必要である。 |
ここで注意してほしいのは、ScreenクラスのBitsPerPixelプロパティは静的なプロパティではない(=インスタンス・プロパティ)ということである。そのためここではプライマリ・スクリーンのScreenオブジェクトを取得して、それが持つBitsPerPixelプロパティから画面の色数を取得するようにしている。
上記のコードから分かるように、プライマリ・スクリーンのScreenオブジェクトを取得するには、Screenクラスの静的なPrimaryScreenプロパティを利用すればよい。
なお、複数のディスプレイを接続しているような環境で、セカンダリ・スクリーン以降のScreenオブジェクトを取得したい場合には、ScreenクラスのAllScreensプロパティを使って目的のScreenオブジェクトを取得する必要がある。その具体的な実装方法については本稿では割愛する。詳しくは、冒頭でも示した「TIPS:ディスプレイの解像度を取得するには?」の「複数のディスプレイが接続されている場合」の項目の説明を参照してほしい。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Windowsフォーム 処理対象:ウィンドウ 使用ライブラリ:Screenクラス(System.Windows.Forms名前空間) 関連TIPS:ディスプレイの解像度を取得するには? |
|
「.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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|