C#カラーコードの使い方完全ガイド|RGB・ARGB・HTML色指定と変換一覧
はじめに
C#で画面の背景色、ボタンの色、文字色、グラフの色、Webページの色などを指定するときに欠かせないのが「カラーコード」です。特に「c# カラーコード」で調べる場面では、RGB、ARGB、HTMLカラーコード、16進数、Color型など、似たような用語が多く出てきて混乱しやすいものです。
C#では、使用するフレームワークによって色の扱い方が少し異なります。Windows FormsではSystem.Drawing.Color、WPFではSystem.Windows.Media.Color、UnityではUnityEngine.Color、MAUIではMicrosoft.Maui.Graphics.Colorのように、同じ「Color」という名前でも型が違うことがあります。
この記事では、C#カラーコードの基本から、RGB・ARGB・HTML色指定、相互変換、フレームワーク別の使い方、実践サンプル、よくあるエラーの対処法までをまとめて解説します。
1. C#カラーコードの基本
1-1. カラーコードとは何か
カラーコードとは、色を数値や文字列で表したものです。人間は「赤」「青」「白」「黒」のように色名で色を認識しますが、プログラムでは色を正確に扱うために数値で指定します。
たとえば、白はHTMLカラーコードでは次のように表せます。
C##FFFFFF
黒は次のように表せます。
C##000000
赤・緑・青の成分を数値で表すRGB形式では、赤は次のように指定できます。
C#R: 255
G: 0
B: 0
C#では、これらの値をColor型に変換して画面部品の背景色や文字色に設定します。
1-2. C#で色を指定する主な方法
C#で色を指定する代表的な方法は、主に次の3つです。
C#Color.Red
C#Color.FromArgb(255, 0, 0)
C#ColorTranslator.FromHtml("#FF0000")
Color.Redのような定義済みカラーを使う方法は簡単ですが、細かい色を指定したい場合にはRGBやHTMLカラーコードを使うのが一般的です。
Windows Formsであれば、次のようにボタンの背景色を指定できます。
C#button1.BackColor = Color.FromArgb(255, 0, 0);
HTMLカラーコードを使う場合は、次のように変換します。
C#button1.BackColor = ColorTranslator.FromHtml("#FF0000");
1-3. RGB・ARGB・HTMLカラーコードの違い
RGBは、Red、Green、Blueの3つの色成分で色を表す形式です。
C#Color.FromArgb(255, 0, 0)
この場合、赤が255、緑が0、青が0なので、純粋な赤になります。
ARGBは、RGBにAlpha値を加えた形式です。Alphaは透明度を表します。
C#Color.FromArgb(128, 255, 0, 0)
この場合、Alphaが128なので半透明の赤になります。
HTMLカラーコードは、Webでよく使われる16進数の色指定です。
C##FF0000
これはRGBで表すと、赤255、緑0、青0と同じ意味です。
C#カラーコードを扱うときは、RGB、ARGB、HTMLカラーコードのどれを使っているのかを意識することが重要です。
1-4. 0〜255と16進数の考え方
RGBの各色成分は、通常0〜255の範囲で指定します。
C#0 // 最小
255 // 最大
赤を最大、緑と青を最小にすると赤になります。
C#Color.FromArgb(255, 0, 0)
16進数では、0〜255を00〜FFで表します。
| 10進数 | 16進数 |
|---|---|
| 0 | 00 |
| 128 | 80 |
| 255 | FF |
そのため、RGBの255, 0, 0はHTMLカラーコードでは次のようになります。
C##FF0000
#RRGGBB形式では、最初の2桁が赤、次の2桁が緑、最後の2桁が青を表します。
1-5. C#で扱う色指定の代表的な利用シーン
C#カラーコードは、さまざまな場面で使われます。
Windows Formsでは、フォーム、ボタン、ラベル、テキストボックスなどの色指定に使います。
C#this.BackColor = Color.White;
label1.ForeColor = Color.Black;
button1.BackColor = Color.LightBlue;
WPFでは、BrushやColorを使って背景色や文字色を指定します。
C#myButton.Background = new SolidColorBrush(Color.FromRgb(0, 120, 215));
ASP.NETやBlazorでは、CSSの色指定としてHTMLカラーコードを使うことが多いです。
HTML<div style="color:#FF0000;">赤い文字</div>
Unityでは、ゲームオブジェクトのマテリアルやUIの色指定に使います。
C#image.color = new Color(1f, 0f, 0f, 1f);
2. C#でRGBカラーを指定する方法
2-1. RGBとは
RGBとは、Red、Green、Blueの3色を組み合わせて色を表す方法です。それぞれの値は0〜255で指定します。
赤は次のようになります。
C#R = 255
G = 0
B = 0
緑は次のようになります。
C#R = 0
G = 255
B = 0
青は次のようになります。
C#R = 0
G = 0
B = 255
RGBはC#カラーコードの中でも基本的な指定方法で、Windows Formsや画像処理、描画処理などでよく使われます。
2-2. Color.FromArgbでRGBを指定する
Windows FormsなどでSystem.Drawing.Colorを使う場合、RGBカラーはColor.FromArgbで指定できます。
C#using System.Drawing;
Color red = Color.FromArgb(255, 0, 0);
Color green = Color.FromArgb(0, 255, 0);
Color blue = Color.FromArgb(0, 0, 255);
引数が3つの場合は、次の順番です。
C#Color.FromArgb(red, green, blue)
つまり、次のコードは赤色を表します。
C#Color color = Color.FromArgb(255, 0, 0);
2-3. 赤・緑・青の値を個別に指定するサンプルコード
RGB値を変数で管理すると、動的に色を変更できます。
C#int r = 255;
int g = 128;
int b = 0;
Color orange = Color.FromArgb(r, g, b);
Windows Formsのボタンに設定する場合は、次のように書きます。
C#int red = 0;
int green = 120;
int blue = 215;
button1.BackColor = Color.FromArgb(red, green, blue);
ユーザー入力からRGB値を受け取る場合は、0〜255の範囲内かチェックしてから使うと安全です。
C#int r = 300;
int g = 100;
int b = 50;
if (r >= 0 && r <= 255 &&
g >= 0 && g <= 255 &&
b >= 0 && b <= 255)
{
Color color = Color.FromArgb(r, g, b);
}
else
{
MessageBox.Show("RGB値は0〜255の範囲で指定してください。");
}
2-4. よく使うRGBカラーコード一覧
| 色名 | RGB | C#コード |
|---|---|---|
| 黒 | 0, 0, 0 | Color.FromArgb(0, 0, 0) |
| 白 | 255, 255, 255 | Color.FromArgb(255, 255, 255) |
| 赤 | 255, 0, 0 | Color.FromArgb(255, 0, 0) |
| 緑 | 0, 255, 0 | Color.FromArgb(0, 255, 0) |
| 青 | 0, 0, 255 | Color.FromArgb(0, 0, 255) |
| 黄色 | 255, 255, 0 | Color.FromArgb(255, 255, 0) |
| シアン | 0, 255, 255 | Color.FromArgb(0, 255, 255) |
| マゼンタ | 255, 0, 255 | Color.FromArgb(255, 0, 255) |
| グレー | 128, 128, 128 | Color.FromArgb(128, 128, 128) |
| オレンジ | 255, 165, 0 | Color.FromArgb(255, 165, 0) |
2-5. RGB指定で発生しやすいエラーと対処法
RGB指定でよくあるエラーは、値の範囲外指定です。
C#Color color = Color.FromArgb(300, 0, 0);
RGB値は0〜255の範囲でなければなりません。300のような値を指定すると例外が発生します。
対処法として、値を範囲内に丸める関数を用意すると便利です。
C#int ClampColorValue(int value)
{
return Math.Max(0, Math.Min(255, value));
}
int r = ClampColorValue(300);
int g = ClampColorValue(-20);
int b = ClampColorValue(100);
Color color = Color.FromArgb(r, g, b);
このようにすれば、300は255に、-20は0に補正されます。
3. C#でARGBカラーを指定する方法
3-1. ARGBとは
ARGBとは、Alpha、Red、Green、Blueの4つの値で色を表す形式です。
C#A = Alpha
R = Red
G = Green
B = Blue
RGBが色そのものを表すのに対し、ARGBは透明度も含めて色を表します。
C#では、Color.FromArgbに4つの引数を渡すことでARGBカラーを指定できます。
C#Color color = Color.FromArgb(128, 255, 0, 0);
この場合、半透明の赤になります。
3-2. Alpha値による透明度の仕組み
Alpha値は透明度を表します。C#のSystem.Drawing.Colorでは、Alpha値も0〜255で指定します。
| Alpha値 | 意味 |
|---|---|
| 0 | 完全に透明 |
| 128 | 半透明 |
| 255 | 完全に不透明 |
たとえば、完全に不透明な赤は次のように指定します。
C#Color red = Color.FromArgb(255, 255, 0, 0);
半透明の赤は次のように指定します。
C#Color semiTransparentRed = Color.FromArgb(128, 255, 0, 0);
完全に透明な赤は次のように指定します。
C#Color transparentRed = Color.FromArgb(0, 255, 0, 0);
3-3. Color.FromArgbでARGBを指定する
ARGBを指定するときの引数の順番は次のとおりです。
C#Color.FromArgb(alpha, red, green, blue)
RGB指定と混同しやすいため注意してください。
C#Color color = Color.FromArgb(128, 0, 120, 215);
このコードでは、Alphaが128、Redが0、Greenが120、Blueが215です。つまり、半透明の青系カラーになります。
3-4. 半透明カラーを作るサンプルコード
半透明の黒を作る例です。
C#Color overlay = Color.FromArgb(128, 0, 0, 0);
半透明の白を作る例です。
C#Color whiteOverlay = Color.FromArgb(180, 255, 255, 255);
既存の色にAlpha値だけを追加したい場合は、次のように書けます。
C#Color baseColor = Color.FromArgb(0, 120, 215);
Color transparentColor = Color.FromArgb(128, baseColor);
このコードでは、baseColorのRGB値を使いながら、Alpha値だけ128に変更しています。
3-5. ARGBとRGBAの違いに注意するポイント
C#でカラーコードを扱うときに特に注意したいのが、ARGBとRGBAの違いです。
ARGBは次の順番です。
C#A, R, G, B
RGBAは次の順番です。
C#R, G, B, A
C#のSystem.Drawing.Color.FromArgbで4つの整数を指定する場合は、ARGB順です。
C#Color.FromArgb(alpha, red, green, blue)
一方、CSSや一部のライブラリではRGBA順で表記することがあります。
CSSrgba(255, 0, 0, 0.5)
このCSSのRGBAは、赤255、緑0、青0、透明度0.5を意味します。C#のFromArgbとは引数の順番もAlpha値の範囲も異なるため、変換時には注意が必要です。
4. C#でHTMLカラーコードを使う方法
4-1. HTMLカラーコードとは
HTMLカラーコードとは、WebページのCSSなどで使われる色指定です。代表的な形式は#RRGGBBです。
C##FF0000
#00FF00
#0000FF
C#でもHTMLカラーコードを使って色を指定できます。特に、Webデザインで使われているカラーコードをWindows Formsアプリなどに反映したい場合に便利です。
4-2. #RRGGBB形式の読み方
#RRGGBB形式は、6桁の16進数でRGBを表します。
C##RRGGBB
それぞれの意味は次のとおりです。
| 部分 | 意味 |
|---|---|
| RR | 赤 |
| GG | 緑 |
| BB | 青 |
たとえば、次のカラーコードは赤です。
C##FF0000
分解すると次のようになります。
C#FF = 赤 255
00 = 緑 0
00 = 青 0
4-3. ColorTranslator.FromHtmlでHTML色を変換する
Windows FormsなどでSystem.Drawing.Colorを使う場合、HTMLカラーコードはColorTranslator.FromHtmlで変換できます。
C#using System.Drawing;
Color color = ColorTranslator.FromHtml("#FF0000");
ボタンの背景色に設定する場合は、次のようになります。
C#button1.BackColor = ColorTranslator.FromHtml("#FF0000");
文字色に設定する場合は、次のようになります。
C#label1.ForeColor = ColorTranslator.FromHtml("#333333");
4-4. #FFFFFFや#000000をC#で使うサンプルコード
白を指定する場合は、#FFFFFFを使います。
C#this.BackColor = ColorTranslator.FromHtml("#FFFFFF");
黒を指定する場合は、#000000を使います。
C#label1.ForeColor = ColorTranslator.FromHtml("#000000");
背景を白、文字を黒にしたい場合は、次のように書けます。
C#this.BackColor = ColorTranslator.FromHtml("#FFFFFF");
label1.ForeColor = ColorTranslator.FromHtml("#000000");
4-5. HTMLカラー名をC#で指定する方法
ColorTranslator.FromHtmlでは、HTMLカラー名を指定することもできます。
C#Color red = ColorTranslator.FromHtml("Red");
Color blue = ColorTranslator.FromHtml("Blue");
Color white = ColorTranslator.FromHtml("White");
次のようにコントロールへ直接設定できます。
C#button1.BackColor = ColorTranslator.FromHtml("LightBlue");
label1.ForeColor = ColorTranslator.FromHtml("DarkRed");
ただし、実務ではカラー名よりも#RRGGBB形式のカラーコードを使った方が、デザイン指定と一致させやすくなります。
4-6. HTMLカラーコード使用時の注意点
HTMLカラーコードをC#で使うときは、文字列の形式に注意が必要です。
正しい例です。
C#Color color = ColorTranslator.FromHtml("#FF0000");
間違いやすい例です。
C#Color color = ColorTranslator.FromHtml("FF0000");
ColorTranslator.FromHtmlでは、通常#付きの#RRGGBB形式を使います。
また、不正な文字列を渡すと例外が発生する可能性があります。
C#Color color = ColorTranslator.FromHtml("#ZZZZZZ");
ユーザー入力を扱う場合は、正規表現などで形式をチェックしてから変換すると安全です。
C#using System.Text.RegularExpressions;
bool IsHtmlColorCode(string value)
{
return Regex.IsMatch(value, "^#[0-9A-Fa-f]{6}$");
}
5. C#カラーコードの変換方法
5-1. RGBから16進数カラーコードへ変換する方法
RGB値からHTMLカラーコードへ変換するには、各値を2桁の16進数に変換します。
C#int r = 255;
int g = 0;
int b = 0;
string htmlColor = $"#{r:X2}{g:X2}{b:X2}";
Console.WriteLine(htmlColor);
実行結果は次のようになります。
C##FF0000
X2は、数値を大文字の16進数2桁で表す指定です。
5-2. 16進数カラーコードからRGBへ変換する方法
HTMLカラーコードからRGB値を取り出すには、文字列を分解して16進数として変換します。
C#string htmlColor = "#FF8000";
int r = Convert.ToInt32(htmlColor.Substring(1, 2), 16);
int g = Convert.ToInt32(htmlColor.Substring(3, 2), 16);
int b = Convert.ToInt32(htmlColor.Substring(5, 2), 16);
Console.WriteLine($"R={r}, G={g}, B={b}");
実行結果は次のようになります。
C#R=255, G=128, B=0
Substring(1, 2)で赤、Substring(3, 2)で緑、Substring(5, 2)で青を取り出しています。
5-3. ARGBからHTMLカラーコードへ変換する方法
通常のHTMLカラーコード#RRGGBBにはAlpha値を含めません。そのため、ARGBからHTMLカラーコードへ変換する場合は、Alphaを除外してRGBだけを使います。
C#Color color = Color.FromArgb(128, 255, 0, 0);
string htmlColor = $"#{color.R:X2}{color.G:X2}{color.B:X2}";
Console.WriteLine(htmlColor);
実行結果は次のようになります。
C##FF0000
Alpha値も含めたい場合は、#AARRGGBBのような形式で表すこともあります。
C#string argbCode = $"#{color.A:X2}{color.R:X2}{color.G:X2}{color.B:X2}";
この場合、半透明の赤は次のようになります。
C##80FF0000
ただし、すべてのフレームワークやCSSで#AARRGGBB形式が同じように使えるわけではありません。
5-4. HTMLカラーコードからColor型へ変換する方法
HTMLカラーコードからColor型へ変換する一番簡単な方法は、ColorTranslator.FromHtmlを使うことです。
C#Color color = ColorTranslator.FromHtml("#0078D7");
RGB値を取得したい場合は、次のようにプロパティを参照します。
C#Console.WriteLine(color.R);
Console.WriteLine(color.G);
Console.WriteLine(color.B);
自分で変換する場合は、次のように書けます。
C#string code = "#0078D7";
int r = Convert.ToInt32(code.Substring(1, 2), 16);
int g = Convert.ToInt32(code.Substring(3, 2), 16);
int b = Convert.ToInt32(code.Substring(5, 2), 16);
Color color = Color.FromArgb(r, g, b);
5-5. Color型から文字列カラーコードへ変換する方法
Color型からHTMLカラーコード文字列へ変換するには、R、G、Bプロパティを使います。
C#Color color = Color.FromArgb(0, 120, 215);
string htmlColor = $"#{color.R:X2}{color.G:X2}{color.B:X2}";
Console.WriteLine(htmlColor);
実行結果は次のようになります。
C##0078D7
Alpha値を含める場合は、次のようにします。
C#string argbColor = $"#{color.A:X2}{color.R:X2}{color.G:X2}{color.B:X2}";
5-6. 変換処理を関数化するサンプルコード
カラーコード変換は何度も使う処理なので、関数化しておくと便利です。
C#using System;
using System.Drawing;
using System.Text.RegularExpressions;
public static class ColorCodeHelper
{
public static string RgbToHtml(int r, int g, int b)
{
ValidateColorValue(r);
ValidateColorValue(g);
ValidateColorValue(b);
return $"#{r:X2}{g:X2}{b:X2}";
}
public static Color HtmlToColor(string htmlColor)
{
if (!Regex.IsMatch(htmlColor, "^#[0-9A-Fa-f]{6}$"))
{
throw new ArgumentException("HTMLカラーコードは#RRGGBB形式で指定してください。");
}
return ColorTranslator.FromHtml(htmlColor);
}
public static string ColorToHtml(Color color)
{
return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}
public static string ColorToArgbCode(Color color)
{
return $"#{color.A:X2}{color.R:X2}{color.G:X2}{color.B:X2}";
}
private static void ValidateColorValue(int value)
{
if (value < 0 || value > 255)
{
throw new ArgumentOutOfRangeException(nameof(value), "色の値は0〜255で指定してください。");
}
}
}
使用例です。
C#string html = ColorCodeHelper.RgbToHtml(255, 0, 0);
Color color = ColorCodeHelper.HtmlToColor("#0078D7");
string code = ColorCodeHelper.ColorToHtml(color);
6. C#のフレームワーク別カラーコード指定
6-1. Windows Formsで色を指定する方法
Windows Formsでは、主にSystem.Drawing.Colorを使います。
C#using System.Drawing;
button1.BackColor = Color.Red;
button1.ForeColor = Color.White;
RGBで指定する場合は、次のようにします。
C#button1.BackColor = Color.FromArgb(0, 120, 215);
HTMLカラーコードを使う場合は、次のようにします。
C#button1.BackColor = ColorTranslator.FromHtml("#0078D7");
フォーム全体の背景色を変える場合は、次のように書けます。
C#this.BackColor = ColorTranslator.FromHtml("#F5F5F5");
6-2. WPFで色を指定する方法
WPFでは、System.Windows.Media.ColorやSolidColorBrushを使います。
C#using System.Windows.Media;
myButton.Background = new SolidColorBrush(Color.FromRgb(0, 120, 215));
myButton.Foreground = new SolidColorBrush(Colors.White);
ARGBで指定する場合は、Color.FromArgbを使います。
C#myButton.Background = new SolidColorBrush(Color.FromArgb(128, 255, 0, 0));
XAMLでは、次のようにHTMLカラーコードに近い形式で指定できます。
XML<Button Background="#0078D7" Foreground="White" Content="OK" />
WPFでは、#AARRGGBB形式もよく使われます。
XML<Button Background="#800078D7" Content="半透明ボタン" />
6-3. ASP.NET・BlazorでHTMLカラーを使う方法
ASP.NETやBlazorでは、HTMLやCSSとしてカラーコードを指定することが多くなります。
HTML<p style="color:#FF0000;">赤い文字</p>
Blazorで変数としてカラーコードを持つ場合は、次のように書けます。
razor@code {
private string mainColor = "#0078D7";
}
<button style="background-color:@mainColor; color:white;">
ボタン
</button>
条件によって色を切り替える場合は、次のようにできます。
razor@code {
private bool isError = true;
private string TextColor => isError ? "#FF0000" : "#333333";
}
<p style="color:@TextColor;">メッセージ</p>
6-4. UnityのC#で色を指定する方法
Unityでは、UnityEngine.Colorを使います。UnityのColorは、RGBやAlphaを0〜1のfloatで指定する点が特徴です。
C#using UnityEngine;
Color red = new Color(1f, 0f, 0f, 1f);
0〜255の感覚で指定したい場合は、255で割ります。
C#Color color = new Color(0f / 255f, 120f / 255f, 215f / 255f, 1f);
また、Color32を使うと0〜255で指定できます。
C#Color32 color = new Color32(0, 120, 215, 255);
HTMLカラーコードを使いたい場合は、ColorUtility.TryParseHtmlStringが便利です。
C#Color color;
if (ColorUtility.TryParseHtmlString("#0078D7", out color))
{
GetComponent<Renderer>().material.color = color;
}
6-5. MAUI・Xamarinで色を指定する方法
.NET MAUIでは、Microsoft.Maui.Graphics.Colorを使います。
C#button.BackgroundColor = Color.FromArgb("#0078D7");
button.TextColor = Colors.White;
RGBで指定する場合は、次のように書けます。
C#button.BackgroundColor = Color.FromRgb(0, 120, 215);
XAMLでは、次のように指定できます。
XML<Button Text="OK"
BackgroundColor="#0078D7"
TextColor="White" />
Xamarin.Formsでは、Xamarin.Forms.Colorを使います。
C#button.BackgroundColor = Color.FromHex("#0078D7");
button.TextColor = Color.White;
フレームワークによってメソッド名が異なるため、使っている環境に合わせて確認することが大切です。
6-6. フレームワークごとのColor型の違い
C#では、フレームワークによってColor型の名前空間や指定方法が異なります。
| フレームワーク | 主なColor型 | 主な指定方法 |
|---|---|---|
| Windows Forms | System.Drawing.Color | Color.FromArgb() |
| WPF | System.Windows.Media.Color | Color.FromRgb()、Color.FromArgb() |
| ASP.NET・Blazor | 文字列・CSS | #RRGGBB |
| Unity | UnityEngine.Color | new Color()、Color32 |
| MAUI | Microsoft.Maui.Graphics.Color | Color.FromArgb()、Color.FromRgb() |
| Xamarin.Forms | Xamarin.Forms.Color | Color.FromHex() |
同じColorという名前でも互換性がない場合があります。複数の名前空間を使っているときは、どのColor型を使っているのかを確認しましょう。
7. C#でよく使うカラーコード一覧
7-1. 基本色のカラーコード一覧
| 色名 | HTML | RGB | ARGB |
|---|---|---|---|
| 黒 | #000000 | 0, 0, 0 | 255, 0, 0, 0 |
| 白 | #FFFFFF | 255, 255, 255 | 255, 255, 255, 255 |
| 赤 | #FF0000 | 255, 0, 0 | 255, 255, 0, 0 |
| 緑 | #00FF00 | 0, 255, 0 | 255, 0, 255, 0 |
| 青 | #0000FF | 0, 0, 255 | 255, 0, 0, 255 |
| 黄色 | #FFFF00 | 255, 255, 0 | 255, 255, 255, 0 |
| シアン | #00FFFF | 0, 255, 255 | 255, 0, 255, 255 |
| マゼンタ | #FF00FF | 255, 0, 255 | 255, 255, 0, 255 |
7-2. グレー系カラーコード一覧
| 色名 | HTML | RGB |
|---|---|---|
| ブラック | #000000 | 0, 0, 0 |
| ダークグレー | #333333 | 51, 51, 51 |
| グレー | #808080 | 128, 128, 128 |
| ライトグレー | #D3D3D3 | 211, 211, 211 |
| ホワイトスモーク | #F5F5F5 | 245, 245, 245 |
| ホワイト | #FFFFFF | 255, 255, 255 |
グレー系は背景色、枠線、補足テキストなどでよく使います。
C#Color background = ColorTranslator.FromHtml("#F5F5F5");
Color text = ColorTranslator.FromHtml("#333333");
7-3. パステルカラーのコード一覧
| 色名 | HTML | RGB |
|---|---|---|
| パステルピンク | #FFD1DC | 255, 209, 220 |
| パステルブルー | #AEC6CF | 174, 198, 207 |
| パステルグリーン | #C1E1C1 | 193, 225, 193 |
| パステルイエロー | #FFFACD | 255, 250, 205 |
| パステルパープル | #CDB4DB | 205, 180, 219 |
| パステルオレンジ | #FFD8B1 | 255, 216, 177 |
パステルカラーは、やわらかい印象のUIや通知背景などに向いています。
C#panel1.BackColor = ColorTranslator.FromHtml("#C1E1C1");
7-4. Webデザインで使いやすいカラーコード一覧
| 用途 | HTML | RGB |
|---|---|---|
| メインブルー | #0078D7 | 0, 120, 215 |
| アクセントレッド | #E81123 | 232, 17, 35 |
| 成功グリーン | #107C10 | 16, 124, 16 |
| 警告オレンジ | #FFB900 | 255, 185, 0 |
| 背景ライト | #F5F5F5 | 245, 245, 245 |
| テキスト標準 | #333333 | 51, 51, 51 |
| 枠線 | #DDDDDD | 221, 221, 221 |
UIでは、意味ごとに色を決めておくとデザインに統一感が出ます。
C#Color successColor = ColorTranslator.FromHtml("#107C10");
Color warningColor = ColorTranslator.FromHtml("#FFB900");
Color errorColor = ColorTranslator.FromHtml("#E81123");
7-5. 透明度付きARGBカラーコード一覧
| 用途 | ARGB | C#コード |
|---|---|---|
| 半透明黒 | 128, 0, 0, 0 | Color.FromArgb(128, 0, 0, 0) |
| 薄い黒 | 64, 0, 0, 0 | Color.FromArgb(64, 0, 0, 0) |
| 半透明白 | 128, 255, 255, 255 | Color.FromArgb(128, 255, 255, 255) |
| 半透明赤 | 128, 255, 0, 0 | Color.FromArgb(128, 255, 0, 0) |
| 半透明青 | 128, 0, 120, 215 | Color.FromArgb(128, 0, 120, 215) |
オーバーレイや選択範囲のハイライトには、透明度付きカラーがよく使われます。
7-6. カラー名とRGB・ARGB・HTMLコード対応表
| カラー名 | HTML | RGB | ARGB |
|---|---|---|---|
| Red | #FF0000 | 255, 0, 0 | 255, 255, 0, 0 |
| Green | #008000 | 0, 128, 0 | 255, 0, 128, 0 |
| Blue | #0000FF | 0, 0, 255 | 255, 0, 0, 255 |
| White | #FFFFFF | 255, 255, 255 | 255, 255, 255, 255 |
| Black | #000000 | 0, 0, 0 | 255, 0, 0, 0 |
| Gray | #808080 | 128, 128, 128 | 255, 128, 128, 128 |
| Orange | #FFA500 | 255, 165, 0 | 255, 255, 165, 0 |
| Purple | #800080 | 128, 0, 128 | 255, 128, 0, 128 |
C#カラーコードでは、HTMLカラー名とRGB値が完全に同じ感覚で使えるとは限りません。厳密に色を合わせたい場合は、カラー名ではなく数値やHTMLカラーコードを使うのがおすすめです。
8. C#カラーコードの実践サンプル
8-1. ボタンの背景色を変更する
Windows Formsでボタンの背景色を変更する例です。
C#button1.BackColor = Color.FromArgb(0, 120, 215);
button1.ForeColor = Color.White;
HTMLカラーコードを使う場合は、次のように書きます。
C#button1.BackColor = ColorTranslator.FromHtml("#0078D7");
button1.ForeColor = ColorTranslator.FromHtml("#FFFFFF");
クリック時に色を変える場合は、次のようにします。
C#private void button1_Click(object sender, EventArgs e)
{
button1.BackColor = ColorTranslator.FromHtml("#107C10");
button1.ForeColor = Color.White;
}
8-2. ラベルやテキストの文字色を変更する
ラベルの文字色を変更する例です。
C#label1.ForeColor = Color.FromArgb(51, 51, 51);
エラーメッセージを赤色にする例です。
C#labelError.ForeColor = ColorTranslator.FromHtml("#E81123");
labelError.Text = "入力内容を確認してください。";
入力が成功した場合は緑色にできます。
C#labelMessage.ForeColor = ColorTranslator.FromHtml("#107C10");
labelMessage.Text = "保存しました。";
8-3. フォームや画面の背景色を変更する
Windows Formsのフォーム背景色を変更する例です。
C#this.BackColor = ColorTranslator.FromHtml("#F5F5F5");
パネルの背景色を変更する例です。
C#panel1.BackColor = ColorTranslator.FromHtml("#FFFFFF");
フォーム全体は薄いグレー、入力エリアは白にすると、見やすい画面になります。
C#this.BackColor = ColorTranslator.FromHtml("#F5F5F5");
panelInput.BackColor = ColorTranslator.FromHtml("#FFFFFF");
8-4. 条件によって色を切り替える
条件によって色を切り替える処理は、ステータス表示でよく使います。
C#int score = 75;
if (score >= 80)
{
labelResult.ForeColor = ColorTranslator.FromHtml("#107C10");
labelResult.Text = "合格";
}
else
{
labelResult.ForeColor = ColorTranslator.FromHtml("#E81123");
labelResult.Text = "不合格";
}
メソッド化すると再利用しやすくなります。
C#private Color GetStatusColor(string status)
{
return status switch
{
"Success" => ColorTranslator.FromHtml("#107C10"),
"Warning" => ColorTranslator.FromHtml("#FFB900"),
"Error" => ColorTranslator.FromHtml("#E81123"),
_ => ColorTranslator.FromHtml("#333333")
};
}
使用例です。
C#labelStatus.ForeColor = GetStatusColor("Error");
8-5. ユーザー入力されたカラーコードを反映する
ユーザーが入力したHTMLカラーコードを反映する例です。
C#private void buttonApply_Click(object sender, EventArgs e)
{
string input = textBoxColorCode.Text;
try
{
Color color = ColorTranslator.FromHtml(input);
panelPreview.BackColor = color;
}
catch
{
MessageBox.Show("正しいカラーコードを入力してください。例:#FF0000");
}
}
より安全にするなら、正規表現でチェックします。
C#private bool IsValidHtmlColor(string value)
{
return Regex.IsMatch(value, "^#[0-9A-Fa-f]{6}$");
}
使用例です。
C#string input = textBoxColorCode.Text;
if (IsValidHtmlColor(input))
{
panelPreview.BackColor = ColorTranslator.FromHtml(input);
}
else
{
MessageBox.Show("#RRGGBB形式で入力してください。");
}
8-6. カラーピッカーで選択した色を使う
Windows Formsでは、ColorDialogを使って色を選択できます。
C#private void buttonSelectColor_Click(object sender, EventArgs e)
{
using (ColorDialog dialog = new ColorDialog())
{
if (dialog.ShowDialog() == DialogResult.OK)
{
panelPreview.BackColor = dialog.Color;
string htmlColor = $"#{dialog.Color.R:X2}{dialog.Color.G:X2}{dialog.Color.B:X2}";
textBoxColorCode.Text = htmlColor;
}
}
}
このコードでは、ユーザーが選択した色をプレビューに反映し、同時にHTMLカラーコードとしてテキストボックスへ表示しています。
9. C#カラーコードでよくある疑問とトラブル
9-1. #付きカラーコードをそのまま使えない場合の対処法
C#では、文字列の"#FF0000"をそのままColor型として代入することはできません。
間違った例です。
C#button1.BackColor = "#FF0000";
BackColorにはColor型を指定する必要があります。
正しい例です。
C#button1.BackColor = ColorTranslator.FromHtml("#FF0000");
WPFの場合は、ColorConverterを使う方法もあります。
C#var color = (Color)ColorConverter.ConvertFromString("#FF0000");
myButton.Background = new SolidColorBrush(color);
9-2. FromArgbの引数の順番を間違えたときの確認方法
Color.FromArgbは、引数の数によって意味が変わります。
3つの場合です。
C#Color.FromArgb(red, green, blue)
4つの場合です。
C#Color.FromArgb(alpha, red, green, blue)
たとえば、次のコードは「赤」ではありません。
C#Color color = Color.FromArgb(0, 255, 0, 0);
Alphaが0なので、完全に透明な赤になります。画面上では見えない可能性があります。
不透明な赤にしたい場合は、次のようにします。
C#Color color = Color.FromArgb(255, 255, 0, 0);
または、RGB指定で次のように書きます。
C#Color color = Color.FromArgb(255, 0, 0);
9-3. 透明にならない場合の原因
ARGBでAlpha値を指定しても透明にならない場合、コントロールや描画方法が透明度に対応していない可能性があります。
たとえば、Windows Formsの一部コントロールでは、半透明の背景色が期待通りに表示されないことがあります。
C#button1.BackColor = Color.FromArgb(128, 255, 0, 0);
このような場合は、次の点を確認します。
1つ目は、Alpha値が正しく指定されているかです。
C#Color.FromArgb(128, 255, 0, 0)
2つ目は、対象のコントロールが透明度に対応しているかです。
3つ目は、描画処理でAlphaを考慮しているかです。
GDI+で描画する場合は、SolidBrushに透明色を指定すると反映されることがあります。
C#using (SolidBrush brush = new SolidBrush(Color.FromArgb(128, 255, 0, 0)))
{
e.Graphics.FillRectangle(brush, 10, 10, 100, 100);
}
9-4. Color型と文字列の変換でエラーが出る原因
文字列からColor型へ変換するときにエラーが出る主な原因は、形式が正しくないことです。
正しい形式です。
C##FF0000
間違った形式です。
C#FF0000
#FF00
#GG0000
変換前にチェックすると、エラーを防ぎやすくなります。
C#bool IsValidColorCode(string value)
{
return Regex.IsMatch(value, "^#[0-9A-Fa-f]{6}$");
}
変換処理はtry-catchで囲むと安全です。
C#try
{
Color color = ColorTranslator.FromHtml(input);
}
catch (Exception ex)
{
MessageBox.Show("カラーコードの形式が正しくありません。");
}
9-5. System.Drawing.Colorが使えない場合の対処法
System.Drawing.Colorが使えない場合は、まず名前空間を確認します。
C#using System.Drawing;
.NETプロジェクトによっては、System.Drawing.Commonパッケージが必要になる場合があります。
また、.NET 6以降ではSystem.Drawing.Commonのクロスプラットフォーム利用に注意が必要です。Windows FormsのようなWindows向けアプリでは一般的に使えますが、LinuxやmacOSで画像処理用途として使う場合は、別のライブラリを検討した方がよいケースがあります。
WPFでは、System.Drawing.Colorではなく次を使います。
C#using System.Windows.Media;
Unityでは次を使います。
C#using UnityEngine;
MAUIでは次を使います。
C#using Microsoft.Maui.Graphics;
同じC#でも、どのアプリケーション種類かによって使うColor型が違う点に注意しましょう。
9-6. .NETのバージョンによる違い
.NET Framework、.NET Core、.NET 5以降、.NET 6以降では、プロジェクトの種類や利用できるAPIに違いがあります。
Windows Formsアプリでは、従来どおりSystem.Drawing.Colorを使うことが多いです。
C#Color color = Color.FromArgb(255, 0, 0);
WPFでは、System.Windows.Media.ColorやBrushを使います。
C#SolidColorBrush brush = new SolidColorBrush(Color.FromRgb(255, 0, 0));
ASP.NETやBlazorでは、C#側でColor型に変換するよりも、CSS文字列として#FF0000を使う方が自然な場合があります。
razor<p style="color:#FF0000;">テキスト</p>
.NETのバージョンだけでなく、アプリの種類に合わせて色指定の方法を選ぶことが大切です。
10. C#カラーコードを扱うときのベストプラクティス
10-1. 色コードを定数化して管理する
色をコード内に直接何度も書くと、変更が大変になります。
避けたい例です。
C#button1.BackColor = ColorTranslator.FromHtml("#0078D7");
label1.ForeColor = ColorTranslator.FromHtml("#0078D7");
panel1.BackColor = ColorTranslator.FromHtml("#0078D7");
定数化すると管理しやすくなります。
C#public static class AppColors
{
public const string MainBlue = "#0078D7";
public const string ErrorRed = "#E81123";
public const string SuccessGreen = "#107C10";
public const string TextDark = "#333333";
public const string BackgroundLight = "#F5F5F5";
}
使用例です。
C#button1.BackColor = ColorTranslator.FromHtml(AppColors.MainBlue);
labelError.ForeColor = ColorTranslator.FromHtml(AppColors.ErrorRed);
10-2. マジックナンバーを避ける
次のように数値だけを直接書くと、何の色なのか分かりにくくなります。
C#button1.BackColor = Color.FromArgb(0, 120, 215);
名前を付けると、コードの意味が分かりやすくなります。
C#Color mainBlue = Color.FromArgb(0, 120, 215);
button1.BackColor = mainBlue;
さらに定数クラスやメソッドにまとめると、保守しやすくなります。
C#public static readonly Color MainBlue = Color.FromArgb(0, 120, 215);
10-3. デザインルールに合わせてカラーを統一する
アプリ内で色がバラバラになると、見た目に統一感がなくなります。メインカラー、アクセントカラー、背景色、文字色、エラー色などをあらかじめ決めておくとよいです。
C#public static class DesignColors
{
public const string Primary = "#0078D7";
public const string Secondary = "#666666";
public const string Success = "#107C10";
public const string Warning = "#FFB900";
public const string Error = "#E81123";
public const string Background = "#F5F5F5";
public const string Text = "#333333";
}
このように定義しておけば、デザイン変更があっても一か所を修正するだけで対応しやすくなります。
10-4. 可読性の高い命名をする
カラーコードに名前を付けるときは、色そのものの名前だけでなく、用途が分かる名前にするのがおすすめです。
色名ベースの例です。
C#MainBlue
LightGray
DarkRed
用途ベースの例です。
C#PrimaryColor
ErrorTextColor
FormBackgroundColor
ButtonHoverColor
実務では、用途ベースの名前の方が変更に強くなります。たとえば、エラー色を赤からオレンジに変更した場合でも、ErrorTextColorという名前なら意味が崩れません。
C#public const string ErrorTextColor = "#E81123";
10-5. 再利用しやすいカラー変換クラスを作る
C#カラーコードを頻繁に扱う場合は、変換クラスを用意すると便利です。
C#using System;
using System.Drawing;
using System.Text.RegularExpressions;
public static class AppColorConverter
{
public static Color FromHtml(string htmlColor)
{
if (!IsHtmlColor(htmlColor))
{
throw new ArgumentException("カラーコードは#RRGGBB形式で指定してください。");
}
return ColorTranslator.FromHtml(htmlColor);
}
public static string ToHtml(Color color)
{
return $"#{color.R:X2}{color.G:X2}{color.B:X2}";
}
public static Color FromRgb(int r, int g, int b)
{
return Color.FromArgb(
Clamp(r),
Clamp(g),
Clamp(b)
);
}
public static Color FromArgb(int a, int r, int g, int b)
{
return Color.FromArgb(
Clamp(a),
Clamp(r),
Clamp(g),
Clamp(b)
);
}
public static bool IsHtmlColor(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
return false;
}
return Regex.IsMatch(value, "^#[0-9A-Fa-f]{6}$");
}
private static int Clamp(int value)
{
return Math.Max(0, Math.Min(255, value));
}
}
使用例です。
C#button1.BackColor = AppColorConverter.FromHtml("#0078D7");
Color color = AppColorConverter.FromRgb(255, 0, 0);
string htmlColor = AppColorConverter.ToHtml(color);
このように、C#カラーコードの変換やチェック処理を共通化しておくと、エラーを減らし、コードの見通しも良くなります。
まとめ
C#カラーコードを扱うときは、まずRGB、ARGB、HTMLカラーコードの違いを理解することが大切です。RGBは赤・緑・青の3成分で色を表し、ARGBはそこに透明度を表すAlpha値を加えます。HTMLカラーコードは#RRGGBB形式で表され、WebデザインやCSSでよく使われます。
Windows FormsではSystem.Drawing.ColorとColor.FromArgb、ColorTranslator.FromHtmlを使うと、RGBやHTMLカラーコードを簡単に扱えます。WPFではSystem.Windows.Media.ColorやSolidColorBrush、BlazorではCSS文字列、UnityではUnityEngine.ColorやColor32、MAUIではMicrosoft.Maui.Graphics.Colorを使うなど、フレームワークごとに指定方法が異なります。
実務では、カラーコードを直接あちこちに書くのではなく、定数化したり、変換クラスを用意したりすることで保守性が高まります。また、FromArgbの引数順、Alpha値の扱い、HTMLカラーコードの形式チェックには注意が必要です。
C#で色を扱う基本は、次の3つを押さえることです。
C#Color.FromArgb(255, 0, 0)
C#Color.FromArgb(128, 255, 0, 0)
C#ColorTranslator.FromHtml("#FF0000")
これらを理解しておけば、C#でのカラーコード指定、変換、UIへの反映をスムーズに行えるようになります。

