彩度を下げる必要がある透明度のある .png があります。ビットマップの平均R、G、B値を取得する必要があることを読み、次を使用します。
G*.59
R*.3
B*.11
この方法で平均色を計算します。
private Color Average_Color(Bitmap bitmap) {
Color c = new Color();
int pixel_number = 0;
int r = 0;
int g = 0;
int b = 0;
for (int i = 0; i < bitmap.Width; i++) {
for (int j = 0; j < bitmap.Height; j++) {
c = bitmap.GetPixel(i, j);
r += c.R;
g += c.G;
b += c.B;
pixel_number++;
}
}
c = Color.FromArgb(1, r / pixel_number, g / pixel_number, b / pixel_number);
return c;
}
次に、最初にテクスチャをペイントするために、次のように色を設定します。
rgb = Average(bitmap);
GL.Color3(rgb.R * 0.59, rgb.G * 0.3, rgb.B * 0.11);
//here I draw my texture
理由はわかりませんが、機能しません (元の色のテクスチャが得られます)。で何かが間違っていると思いAverage_Color
ます。たぶん、完全に不透明なビットマップではないからでしょうか?