2009-07-18 9 views
1

私はWritableBitmapに何を書きたいのかを説明する2次元配列のsARGBカラー(System.Windows.Media.Color)を持っています。配列は、予想されるビットマップと同じ幅と高さです。問題は、私が見る限り、WritableBitmapのWritePixelsメソッドは整数の配列を必要とするということです。色を前記配列に変換するにはどうしたらいいですか?カラーsARGB配列をWriteableBitmapに書き込む

答えて

1

配列内の要素のデータ型は? Colorの値の場合、Color構造体には、ToArgbメソッドがあり、その色を整数として返します。

WritePixelsメソッドは、byte、short、int、longのようなほとんどの単純型の1次元配列を受け入れます。 ARGB形式の場合、各ピクセルは4バイトまたは1つのintを必要とします。

編集:

byte[] pixelData = new byte[colorArray.Length * 4]; 
int ofs = 0; 
for (int y = 0; y < colorArray.GetLength(1); y++) { 
    for (int x = 0; x < colorArray.GetLenth(0); x++) { 
     Color c = colorArray[x, y]; 
     pixelData[ofs++] = c.A; 
     pixelData[ofs++] = c.R; 
     pixelData[ofs++] = c.G; 
     pixelData[ofs++] = c.B; 
    } 
} 
+1

System.Windows.Media.Color:あなたはSystem.Window.Media.Color値を持っているとして、あなたは色のコンポーネントのためのバイト値を取得するにはARGBプロパティを使用することができます
ToArgbメソッドがありません。 sARGBカラースペースでは、すべての値が単一です。 – Wilhelm

+0

どの色構造を使用したか分かりませんでした(たとえば、System.Drawing.Color構造体にはToArgbメソッドがあります)。色成分を取得する方法について上記の私の編集。 – Guffa

+0

私は、ARGBだけでなく、sARGBカラースペースを扱うWPF System.Windows.Media.Colorのものを使用しました。 – Wilhelm

関連する問題