gpt4 book ai didi

c# - 如何在 C# 中指定 RGB 值的范围

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

在一个窗体上,我有一个 PictureBox,一个用于在图片框中加载图像的按钮和几个用于对加载到图片框中的图像执行一些操作的按钮。

我将位图图像加载到图片框中,然后我想对加载图像的像素范围 rgb(150,150,150)rgb(192,222,255) 执行一些操作。

  • 是否可以使用 SetPixel 方法来做到这一点?
  • 有什么方法可以在 C# 中指定 RGB 值的范围吗?

最佳答案

简单的方法是这样的:

for (int i = 0; i < width; i++)
for (int j = 0; j < height; j++)
{
Color c = bitmap.GetPixel(i, j);
if (ColorWithinRange(c))
{
// do stuff
}
}

ColorWithinRange 定义如下:

private readonly Color _from = Color.FromRgb(150, 150, 150);
private readonly Color _to = Color.FromRgb(192, 222, 255);
bool ColorWithinRange(Color c)
{
return
(_from.R <= c.R && c.R <= _to.R) &&
(_from.G <= c.G && c.G <= _to.G) &&
(_from.B <= c.B && c.B <= _to.B);
}

然而,对于大尺寸的位图,GetPixelSetPixel 变得非常慢。所以,在你实现你的算法之后,如果感觉很慢,你可以使用 Bitmap.LockBits固定位图的方法(防止 GC 在内存中移动它)并允许您快速不安全地访问单个字节。

关于c# - 如何在 C# 中指定 RGB 值的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8884144/

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