fenri's diary

基本的には勉強し始めたC#のメモ。後は140字で収まらない駄文。

VB6での色番号フォーマットとC# (.net)での色番号フォーマット

従来のWindowsコントロールの”色”
Windows GDIにおいてはRGB色を指定するときCOLORREF値というDWORD型の値を設定します。
例えば、SetBkColor()やSetTextColor()関数などが挙げられます。

RGB = 0x00BBGGRR

.NET Frameworkの”色”
一方.NET Frameworkでは”色”を表すものとしてColor構造体があります。
これはRGB値ではなく、さらにアルファ値を加えたARGB値で色を表現します。
ARGB = 0xAARRGGBB


コントロールの色を扱うときの注意
http://www110.kir.jp/csharp/chip0211.html



変換関数

/// <summary>
/// 色番号ARGBをRGB(VB用)に変換する
/// AARRGGBB => 00BBGGRR
/// </summary>
/// <param name="rgbString">ARGB値(Hexで8桁)</param>
/// <returns></returns>
private string ARGB2RGB(string argbString)
{
	string rgb = string.Empty;

	string AA =  string.Empty;
	string RR =  string.Empty;
	string GG =  string.Empty;
	string BB =  string.Empty;

	AA = argbString.Substring(0,2);
	RR = argbString.Substring(2,2);
	GG = argbString.Substring(4,2);
	BB = argbString.Substring(6,2);

	rgb = "00"+BB+GG+RR;
	return rgb;
}
/// <summary>
/// 色番号RGB(VB用)をARGBに変換する
/// BBGGRR => ARGB
/// </summary>
/// <param name="rgbString">RGB値(Hexで8桁上位2桁は00)</param>
/// <returns></returns>
private string RGB2ARGB(string rgbString)
{
	string argb = string.Empty;

	string AA = string.Empty;
	string RR = string.Empty;
	string GG = string.Empty;
	string BB = string.Empty;

	AA = rgbString.Substring(0, 2);
	BB = rgbString.Substring(2, 2);
	GG = rgbString.Substring(4, 2);
	RR = rgbString.Substring(6, 2);

	argb = "FF" + RR + GG + BB;
	return argb;
}