まず最初に、私がやろうとしていることを説明します。誰かがより良いアプローチを思いついた場合に備えて、Photoshop の「カラー」スタイルを使用して画像をブレンドする必要があります (ブレンド方法: スクリーン、ハードライト、色 ... )
したがって、基本イメージ (png) と WriteableBitmap が実行時に生成されます (カラー マスクと呼びましょう)。次に、「color」メソッドを使用してこの 2 つの画像をブレンドし、結果を UI コンポーネントに表示する必要があります。
これまでのところ、私が試みているのは、WriteableBitmap に描画することだけですが、アルファ チャネルで予期しない動作に直面しています。
これまでの私のコード:
// variables declaration
WriteableBitmap img = new WriteableBitmap(width, height, 96,96,PixelFormats.Bgra32,null);
pixels = new uint[width * height];
//function for setting the color of one pixel
private void SetPixel(int x, int y, Color c)
{
int pixel = width * y + x;
int red = c.R;
int green = c.G;
int blue = c.B;
int alpha = c.A;
pixels[pixel] = (uint)((blue << 24) + (green << 16) + (red << 8) + alpha);
}
//function for paint all the pixels of the image
private void Render()
{
Color c = new Color();
c.R = 255; c.G = 255; c.B = 255; c.A = 50;
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
SetPixel(x, y, c);
img.WritePixels(new Int32Rect(0, 0, width, height), pixels, width * 4, 0);
image1.Source = img; // image1 is a WPF Image in my XAML
}
色 cA = 255 でコードを実行するたびに、期待どおりの結果が得られます。イメージ全体が目的の色に設定されます。しかし、cA を別の値に設定すると、奇妙なことが起こります。色を BRGA = 0,0,255,50 に設定すると、ほぼ黒に近い濃い青になります。BRGA = 255,255,255,50 に設定すると、黄色になります...
どんな手掛かり !?!?!
前もって感謝します !