|
■No61775 (佐藤 正弘 さん) に返信 この掲示板には、 『半角カナは使用しないでください。文字化けの原因になります。』 というルールがあります。投稿欄の近くに書いてありますので、確認しておいてください。
>>> visual basic 2010にて、Getpixelより得られたカラー型のデータをString型に変換する方法が分りません。 どのように変換したいのか、最初に具体的に書いておかないと、質問と回答を繰り返すことになってしまいますよ。 GetPixelというのが何のことで、どのような色をどんな形式の文字列にしたいのか。
> ColorCnverterクラスの 「ColorConverterクラス」ですね。 代わりに、Color 構造体の Name プロパティと FromName メソッドを使う事も出来ます。
> ConvertToStringを利用する方法は、ストリンク゛にはなりますが、 > RGBの3このテ゛ータをコンマで結合したものでした。 そうとは限りません。
ConvertToInvariantString メソッドや ConvertToString メソッドは、 ARGB 4 データになることもあれば、カンマの無い文字列にもなりえます。
例えば、透明度を持つ色「Color.FromArgb(1, 2, 3, 4)」を変換した結果は "1, 2, 3, 4" という Alpha, Red, Green, Blue な文字列になりますし、 「Color.Red」を変換した結果は "255, 0, 0" ではなく "Red" になります。 また、「SystemColors.Desktop」を変換した結果は "Desktop" です。
すべて数値で表記されないのは、それが必要なケースがあるためです。 特にシステムカラーについては、Color.ToArgb / FromArgb で変換してしまうと、 元の色を正しく表せなくなってしまいます。
> ColorのToStringを利用する方法はやはり、R= ,G= 、B= と、3個の数字が並んでいたものでした。 最初の質問では、その形式では都合が悪いという事は記載されていませんでしたので、 文字列化でき、かつ、Color へ復元可能な方法のひとつとして紹介したまでです。
> 一つの数字で表現できる方法はないのでしょうか? 透明度を無視しても良いのであれば、 s = ColorTranslator.ToOle( Color構造体 ).ToString("d") 'Color → 10進数表記 s = ColorTranslator.ToOle( Color構造体 ).ToString("x") 'Color → 16進数表記 s = ColorTranslator.ToOle( Color構造体 ).ToString("x8") 'Color → 16進数固定桁表記 という手があります。
逆に、復元するときは、 c = ColorTranslator.FromOle( Convert.ToInt32( 文字列 , 10) ) '10進数表記 → Color c = ColorTranslator.FromOle( Convert.ToInt32( 文字列 , 16) ) '16進数表記 → Color です。
OLE カラー表記は透明度を保持できませんが、システムカラーも正しく保持できます。 逆に、システムカラーは不要で透明度が必要なら、ToArgb / FromArgb で良いでしょう。
|