我的代码中存在问题。我创建了以RGB格式显示值的应用程序。我的意思是在文本框中不显示有关白色的信息(即R:255 G:255 B:255)。这是我负责显示的代码片段。我做错了什么?
void pixinfo ( int build , string tex )
{
pic = (Bitmap)pictureBox1.Image.Clone();
var data = pic.LockBits(
new Rectangle(System.Drawing.Point.Empty, pic.Size),
ImageLockMode.ReadWrite, pic.PixelFormat);
var pixelSize = data.PixelFormat == PixelFormat.DontCare? 4 : 3;
var padding = data.Stride - (data.Width * pixelSize);
var bytes = new byte[data.Height * data.Stride];
Marshal.Copy(data.Scan0, bytes, 0, bytes.Length);
var index = 0;
var builder = new StringBuilder();
for (var y = 0; y < data.Height; y++)
{
for (var x = 0; x < data.Width; x++)
{
// if (pixelSize == 255 )
// if(bytes[index +2] !=255 && bytes[index +1] != 255 && bytes[index] !=255 )
// {
Color pixelColor = Color.FromArgb(
pixelSize == 3 ? 255 :
bytes[index + 3], // Alfa
bytes[index + 2], // R
bytes[index + 1], // G
bytes[index] // B
);
// if (pixelColor.R = 255 && pixelColor.G = 255 && pixelColor.B = 255)
builder
.Append("\nR: \n")
.Append(pixelColor.R)
.Append(" \nG: \n")
.Append(pixelColor.G)
.Append(" \nB: \n")
.Append(pixelColor.B)
.AppendLine(" \n \n");
index += pixelSize;
// }
index += padding;
Application.DoEvents();
}
}
Marshal.Copy(bytes, 0, data.Scan0, bytes.Length);
tex = builder.ToString();
build = Convert.ToInt32(tex);
if (build != 255 )
{
textBox1.Text = build.ToString();
}
我程序中的文本框如下所示: MyProgram 我不想看到255 255 255值。