Autohotkey 如何确定颜色是否在阴影范围内

Autohotkey 如何确定颜色是否在阴影范围内,autohotkey,getpixel,Autohotkey,Getpixel,我不确定这是否可能,因为我已经找了几个小时,找不到我要找的东西 我所做的是从一个半透明的游戏面板上取一种颜色,所以我所取的颜色总是在微妙地变化。现在需要的是一种方法,以检查它是否是+/-10左右的阴影我想要的颜色 差不多 如果颜色1是0x的+/-10 我尝试过使用图像搜索来做类似的事情,但没有成功 非常感谢您提供的任何帮助我想您已经阅读了PixelGetColor的局限性:已知局限性: 部分透明的窗口或其一种颜色标记为“不可见的TransColor”的窗口通常会为其背后的窗口而不是自己的窗口生成

我不确定这是否可能,因为我已经找了几个小时,找不到我要找的东西

我所做的是从一个半透明的游戏面板上取一种颜色,所以我所取的颜色总是在微妙地变化。现在需要的是一种方法,以检查它是否是+/-10左右的阴影我想要的颜色

差不多 如果颜色1是0x的+/-10

我尝试过使用图像搜索来做类似的事情,但没有成功


非常感谢您提供的任何帮助

我想您已经阅读了PixelGetColor的局限性:已知局限性:

部分透明的窗口或其一种颜色标记为“不可见的TransColor”的窗口通常会为其背后的窗口而不是自己的窗口生成颜色。 PixelGetColor可能无法为某些应用程序生成准确的结果。如果出现这种情况,请尝试在最后一个参数中指定单词Alt或Slow

使用ImageSearch时,可以指定颜色的增量。例如:

ImageSearch, FoundX, FoundY, %SearchRangeLeft%, %SearchRangeTop%, %SearchRangeRight%, %SearchRangeBottom%, *20 %ImageFile%  

这里的*20表示我的搜索颜色在0到255之间的变化。在100100 RGB图像内搜索像素时,它将匹配80,80,80和120120之间的任何内容。希望这能有所帮助,但匹配透明颜色很困难,而且容易出错。图像和搜索范围越小越好,速度越快

我假设您已经阅读了关于PixelGetColor的限制:已知限制:

部分透明的窗口或其一种颜色标记为“不可见的TransColor”的窗口通常会为其背后的窗口而不是自己的窗口生成颜色。 PixelGetColor可能无法为某些应用程序生成准确的结果。如果出现这种情况,请尝试在最后一个参数中指定单词Alt或Slow

使用ImageSearch时,可以指定颜色的增量。例如:

ImageSearch, FoundX, FoundY, %SearchRangeLeft%, %SearchRangeTop%, %SearchRangeRight%, %SearchRangeBottom%, *20 %ImageFile%  

这里的*20表示我的搜索颜色在0到255之间的变化。在100100 RGB图像内搜索像素时,它将匹配80,80,80和120120之间的任何内容。希望这能有所帮助,但匹配透明颜色很困难,而且容易出错。图像和搜索范围越小,效果越好,速度也越快

除了罗伯特的答案,你还可以用数学方法比较颜色

首先,分离红色、绿色和蓝色值

ToRGB(color) {
    return { "r": (color >> 16) & 0xFF, "g": (color >> 8) & 0xFF, "b": color & 0xFF }
}
然后我们需要一个比较颜色的函数。每个变量都包含一个数字,表示两个颜色值之间的差异。例如,如果c1中的红色为255,c2中的红色为200,则rdiff将为55。我们使用Abs,这样当c2有更高的值时,我们就不会得到-55。然后我们确保每一个的差异小于我们的差异


除了罗伯特的答案,你还可以用数学方法比较颜色

首先,分离红色、绿色和蓝色值

ToRGB(color) {
    return { "r": (color >> 16) & 0xFF, "g": (color >> 8) & 0xFF, "b": color & 0xFF }
}
然后我们需要一个比较颜色的函数。每个变量都包含一个数字,表示两个颜色值之间的差异。例如,如果c1中的红色为255,c2中的红色为200,则rdiff将为55。我们使用Abs,这样当c2有更高的值时,我们就不会得到-55。然后我们确保每一个的差异小于我们的差异