.NET TIPS HTMLカラーの色名表記と16進表記を相互に変換するには?デジタルアドバンテージ2004/12/03 |
![]() |
|
HTMLで色を指定する場合、表記方法として16進数文字列で表す16進表記(「#FF0000」など。RGBカラー値とも呼ばれる)と色名表記(「Red」など)の2通りがある。本稿では、色名表記と16進表記を相互に変換する方法を紹介する。
ちなみに、色名表記で標準的に利用可能な色には、一般的に「X11カラー」と呼ばれる140種類があり、KnownColor列挙体(System.Drawing名前空間)には、これらすべての色名が定義されている(「KnownColor.Red」など)。
色名表記→16進表記の変換
「Red → #FF0000」のように色名表記を16進表記に変換するには、ColorTraslatorクラス(System.Drawing名前空間)のFromHtmlメソッドにより、まず色名からColor構造体(System.Drawing名前空間)のオブジェクトを得る。
Color c = ColorTranslator.FromHtml("Red");
これには、次のようにColor構造体のFromNameメソッドを使ってもよい。
Color c = Color.FromName("Red");
Color構造体では、その色を構成する赤、緑、青の値をR、G、Bプロパティから得ることができるので、後はそれらの各値をそれぞれ16進数2けたの文字列に変換して連結すればよい。
String htmlColor = String.Format("#{0:X2}{1:X2}{2:X2}", c.R, c.G, c.B);
上記の例の場合には、変数htmlColorは「#FF0000」となる。数値を書式指定して文字列に変換する方法に関しては「TIPS:数値を右詰めや0埋めで文字列化するには?」で解説している。
なお、上記のように色名からColorオブジェクトを作成した場合には、そのNameプロパティにより色名を参照できる。
16進表記→色名表記の変換
「#FF0000 → Red」のように16進表記を色名表記に変換する場合にもColorTranslatorクラスのFromHtmlメソッドが利用できるが、単純に次のように記述しただけではうまくいかない。
Color c = ColorTranslator.FromHtml("#FF0000");
この場合には、ColorオブジェクトのNameプロパティには「ffff0000」という文字列がセットされる(先頭の「ff」は透明度を示すアルファ値を表している)。しかし、次のように「#」を「0x」に置き換えて呼び出すことにより、Nameプロパティには色名がセットされるようになる。
Color c = ColorTranslator.FromHtml("0xFF0000");
この場合には、c.Nameの値は「Red」となり、色名を文字列として取得できる。対応する色名が存在しない場合、c.Nameの値は「ff」で始まる8けたの16進数文字列となる。
16進表記と色名表記を相互変換するサンプル・プログラム
以上の方法をまとめたサンプル・プログラムを次に示す。
|
|
16進表記と色名表記を相互変換するC#のサンプル・プログラム(colorconv.cs) | |
|
|
16進表記と色名表記を相互変換するVB.NETのサンプル・プログラム(colorconv.vb) | |
このサンプル・プログラムでは、「#」を「0x」に置き換えるために、Stringクラス(System名前空間)のReplaceメソッドを利用している。なお、「#」を置き換える文字列は「&H」でもよい。
カテゴリ:クラス・ライブラリ 処理対象:文字列 使用ライブラリ:KnownColor列挙体(System.Drawing名前空間) 使用ライブラリ:ColorTranslatorクラス(System.Drawing名前空間) 使用ライブラリ:Color構造体(System.Drawing名前空間) 関連TIPS:数値を右詰めや0埋めで文字列化するには? |
|
![]() |
「.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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
||
|
||
![]() |