|
.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」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


