生成しているビットマップからピクセル値を読み戻すのに問題があります。最初に、次のコードを使用して、クラスでmaskBitmapという名前のビットマップを生成します。
void generateMaskBitmap()
{
if (inputBitmap != null)
{
Bitmap tempBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(tempBitmap))
{
Brush brush = Brushes.Black;
for (int y = 0; y < tempBitmap.Height; y += circleSpacing)
{
for (int x = 0; x < tempBitmap.Width; x += circleSpacing)
{
g.FillEllipse(brush, x, y, circleDiameter, circleDiameter);
}
}
g.Flush();
}
maskBitmap = (Bitmap)tempBitmap.Clone();
}
}
次に、次のコードを使用して、元の画像にマスクを適用しようとします。
void generateOutputBitmap()
{
if (inputBitmap != null && maskBitmap != null)
{
Bitmap tempBitmap = new Bitmap(inputBitmap.Width, inputBitmap.Height);
for (int y = 0; y < tempBitmap.Height; y++)
{
for (int x = 0; x < tempBitmap.Width; x++)
{
Color tempColor = maskBitmap.GetPixel(x, y);
if (tempColor == Color.Black)
{
tempBitmap.SetPixel(x, y, inputBitmap.GetPixel(x, y));
}
else
{
tempBitmap.SetPixel(x, y, Color.White);
}
}
}
outputBitmap = tempBitmap;
}
}
マスクビットマップは正常に生成され、画像ボックスに表示されますが、テスト時のすべてのピクセルの色の値はtempColor
空を示します(A = 0、R = 0、G = 0、B = 0)。getpixel / setpixelのパフォーマンスの問題を認識していますが、これはこのプロジェクトの問題ではありません。"tempColor == Color.Black"
これは有効なテストではないことも承知していますが、これは私の比較コードの単なるプレースホルダーです。