2010年02月06日

VB6(VBA)とVB.NET(VB2005,2008)の色データの違い

VB2008でExcelの表を作成するプログラムを作った時、セルの色を指定するところでエラーが起きた。

原因はVB6やVBA(Excel)が色のデータをRGB(赤,緑,青)の3色(3×8)24bitで表現しているのに対し、.NETではARGB(RGBとAlpha(透過)値)の4×8=32bitで表現するようになったためだ。

これらを相互に変換するためにSystem.Drawing.ColorTranslatorクラスにある関数を使う。

・ARGB(Color構造体)をRGBにする
ColorTranslator.ToOle(Color.Red)
ColorTranslator.ToWin32(Color.Red)

・逆にRGBデータをARGB(Color構造体)に変換するには
ColorTranslator.FromOle(RGB(255,255,0))
ColorTranslator.FromWin32(RGB(255,255,0))

・ColorTranslatorにはHTMLで使うカラー形式を変換するメソッドもある
ColorTranslator.ToHtml(Color.Red)
ColorTranslator.FromHtml("#FF00FF")

その後RGBで指定する場合ならColor構造体のメンバーにあるFromArgbメソッドでも可能なことが分かった。
RGBデータでColor(ARGB)指定するには Color.FromArgb(255,255,0)とするだけでよい。この場合アルファ値は暗黙的に 255 (完全不透明) になる。


posted by なっちゃん at 13:33| 静岡 ☀| Comment(0) | TrackBack(0) | VB vs VB.NET | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。