我需要从bmpOut图像中填充selFrame图像中的一些白色像素。现在,如果pixel3是透明的或空的,它将检查它的所有方面。如果像素周围不是透明也不是空的像素,则pixel3将从pixel2获得它的值。如何检查pixel3周围的像素是否透明?像素的间隙最大为10.这是我到目前为止所得到的
for (int c = 0; c < selFrame.Width; c++)
for (int j = 0; j < selFrame.Height; j++)
{
var pixel2 = bmpOut.GetPixel(c, j);
var pixel3 = selFrame.GetPixel(c, j);
if (pixel3.ToArgb() == System.Drawing.Color.Transparent.ToArgb() || pixel3.IsEmpty)
{
// do process here
}
}
更新了代码
for (int c = 0; c < selFrame.Width; c++)
for (int j = 0; j < selFrame.Height; j++)
{
var pixel2 = bmpOut.GetPixel(c, j);
var pixel3 = selFrame.GetPixel(c, j);
if (pixel3.ToArgb() == System.Drawing.Color.White.ToArgb() || pixel3.IsEmpty)
{
for (int n = 1; n < 20; n++)
{
if (c + n < selFrame.Width && j + n < selFrame.Height)
if (c - n > 0 && j - n > 0)
{
var pix = selFrame.GetPixel(c + n, j + n);
var pix2 = selFrame.GetPixel(c - n, j - n);
if (pix.ToArgb() != System.Drawing.Color.Transparent.ToArgb() || !pix.IsEmpty)
if (pix2.ToArgb() != System.Drawing.Color.Transparent.ToArgb() || !pix2.IsEmpty)
{
selFrame.SetPixel(c, j,pixel2);
MessageBox.Show("q");
}
}
}
}
}
消息框正在显示,但它没有填满白色像素