gpt4 book ai didi

c# - 在 C# 中更改像素颜色

转载 作者:行者123 更新时间:2023-11-30 14:23:52 25 4
gpt4 key购买 nike

你好,我正在开发读取整个图像并将绿线颜色更改为红线的程序,例如我有这张图片 this image我希望 C# 程序获取绿色像素并将其转换为红色我试过这段代码:`

public Bitmap ReadImgPixel(Bitmap img)
{
Bitmap pic = new Bitmap(img,img.Width,img.Height);
int a1 = img.Width;
int a2 = img.Height;
System.Drawing.Color[,] pixels = new System.Drawing.Color[a1,a2];

for (int i = 0;i< img.Width ; i++)
{
for(int j=0; j < img.Height; j++)
{

System.Drawing.Color pxl = img.GetPixel(i, j);
if (pxl != System.Drawing.Color.White)
{
pic.SetPixel(i, j, System.Drawing.Color.Red);
}

}

}
return pic;
}

但结果是整个图像都变成了红色如何修复它!!

最佳答案

您是否尝试过调试(您可以很容易地找出为什么所有像素都变成红色)?你的整个图片变成红色,因为 if 语句总是 true

发生这种情况的原因是因为您正在比较结构。但是,您的像素 ​​name 不会显示 White(您正在比较的内容),但它会包含一个字符串,其中包含您的 hex 值颜色(例如 ffffff)。所以它永远不会相等,因为对象是不同的。因此,由于您想查看 ARGB 值是否相同,因此您必须比较这些值。

将您的语句更改为此以比较 ARGB 值:

if (pxl.ToArgb() != Color.White.ToArgb())

还要确保检查 Cody Gray's comment ,因为您的代码绝对没有效率。如果效率对您很重要,请尝试不同的方法,但这不在本问题的讨论范围内。

关于c# - 在 C# 中更改像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com