0

私は周りを見回しましたが、この質問は見当たりません-多分簡単すぎるかもしれませんが、私はそれを持っていません。

次のような色の値を含むファイルがある場合:

255、65535、65280(これは緑だと思います)

次のいずれかの方法があります:

  1. これらをSystem.Drawing.Colorタイプに変換するか、または....さらに良い..
  2. .NETは色を表すためにそれらをそのまま受け入れますか?

ありがとう、

4

2 に答える 2

2

カラータイプの使用方法は次のとおりです。

dim someColor as Color = color.FromArgb(red, green, blue)
  • 必ず使用してくださいImports System.Drawing
  • それぞれのrgb値の赤、緑、青を変更します(例:0-255)
于 2010-01-13T23:48:58.867 に答える
1

この回答の以前のバージョンに関するコメントから、ファイル内の各数値は1つの色を表し、これらはパックされたバイトであるように見えます。

65280 (= 0xFF00) -> (0, 255, 0)
65535 (= 0xFFFF) -> (255, 255, 0)

したがって、トリプルの最初の(赤?)部分に下位バイトが必要であり、トリプルの2番目(青?)の部分に次の上位バイトが必要です。65535を超える値はトリプルの3番目のバイトに入ると思います。

これは、ビットマスキングおよびビットシフト演算子を使用して簡単に行うことができます。

int r = n && 0xFF;
int g = (n >> 8) & 0xFF;
int b = (n >> 16) & 0xFF;

つまり、毎回8ビットずつ右にシフトし、下の8ビットを選択します。

注:これは、Color.FromArgb(Int32)を使用して直接行うこともできます。これにより、解凍を行う必要がなくなります。ただし、これは、ファイル内の数値が正しい方法でパックされている場合にのみ機能します。それらはAARRGGBB形式である必要があります。たとえば、255(0x000000FF)=青、65280(0x0000FF00)=緑、16711680(0x00FF0000)=赤です。あなたの番号が正しい順序であるかどうかはわかりません。そのため、明示的な開梱手法について説明しました。

于 2010-01-13T23:48:39.583 に答える