在屏幕某个区域中搜索指定颜色所在的像素.
PixelSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ColorID , Variation, Mode
用来保存首个匹配 ColorID 像素的 X 和 Y 坐标(如果没有发现匹配, 则此变量被置空). 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置.
其中一个或两个参数都可以留空, 此时可以使用 ErrorLevel(请参阅下面) 来判断是否找到了匹配.
要搜索的矩形区域的起始角的 X 和 Y 坐标, 可以为表达式. 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置.
要搜索的矩形区域的结束角的 X 和 Y 坐标, 可以为表达式. 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置.
要搜索的十进制或十六进制的颜色 ID, 使用蓝绿红(BGR) 格式, 可以为表达式. 颜色 ID 可以使用 Window Spy(可从托盘菜单打开) 或 PixelGetColor 来确定. 例如: 0x9d6346
.
一个介于 0 和 255(包含的) 之间的数字, 用于表示此颜色红/绿/蓝成分强度在每个方向上允许的渐变值(可以为表达式). 此参数用于需要寻找的颜色渐变值可能变化时. 如果指定 255 为浮动的渐变值, 则匹配所有颜色. 默认渐变值为 0.
此参数可以包含单词 Fast, RGB 或同时包含两者(同时包含两者时它们之间请用空格分隔; 即 Fast RGB).
Fast: 使用快速的搜索方法, 在大多数情况下此方法可以明显减少搜索时消耗的 CPU 时间. 尽管此方法支持颜色深度低至 8 位(256 色), 不过在 24 位或 32 位颜色深度下此快速模式执行地更好. 如果屏幕的颜色深度为 16 位或更低, 则 Variation 参数在慢速模式和快速模式的行为可能有轻微的差异. 最后, 快速模式按行搜索屏幕(从上往下) 而不是按列. 因此, 如果屏幕上有多个匹配的像素, 则快速模式可能找到一个和慢速模式不同的像素.
RGB: 把 ColorID 解释为 RGB 值而不是 BGR. 即交换了其中的红色和蓝色的成分.
[v1.1.04+]: 此命令在搜索遇到问题时会抛出异常. 想了解更多信息, 请参阅运行时错误.
如果在指定的区域找到指定的颜色, 则 ErrorLevel 被设置为 0, 没有找到则为 1, 而如果在命令执行过程中遇到问题使搜索无法进行则为 2.
要搜索的目标区域必须是可见的; 换句话说, 无法搜索隐藏在其他窗口背后的窗口区域. 与之相比, 鼠标光标下方的像素颜色通常可以检测出来. 例外情况是游戏的指针, 在大多数情况下它会隐藏在它下方的任何像素.
搜索顺序取决于参数的顺序. 换句话说, 如果 X1 大于 X2, 搜索会从右往左进行, 从列 X1 开始. 类似地, 如果 Y1 大于 Y2, 则从下到上进行搜索. 然而, 在 [v1.1.32] 之前, 快速模式要求 X1 和 Y1 位于左上角.
快速模式: 搜索从 X1 和 Y1 指定的坐标开始, 并检查从 X1 到 X2 行中的所有像素是否匹配. 如果在该处找不到匹配项, 则搜索将逐行继续到 Y2, 直到找到匹配的像素为止.
慢速模式: 搜索从 X1 和 Y1 指定的坐标开始, 并检查从 Y1 到 Y2 列中的所有像素是否匹配. 如果在该处找不到匹配项, 则搜索将逐列继续到 X2, 直到找到匹配的像素为止.
如果要搜索的区域很大, 并且以高频率重复搜索, 则可能会占用大量的 CPU 时间. 为了减轻这种情况, 请将区域的大小保持最小.
PixelGetColor, ImageSearch, CoordMode, MouseGetPos
PixelSearch, Px, Py, 200, 200, 300, 300, 0x9d6346, 3, Fast if ErrorLevel MsgBox, That color was not found in the specified region. else MsgBox, A color within 3 shades of variation was found at X%Px% Y%Py%.