# PixelSearch

在屏幕的一个区域中搜索指定颜色所在的像素.

PixelSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ColorID [, Variation, Fast|RGB]

#### 参数

OutputVarX/Y | 变量名称, 用于保存首个匹配 ColorID 的像素的 X 和 Y 坐标(如果没发现匹配, 此变量被置空). 如果没有使用 CoordMode, 默认情况下坐标相对于活动窗口. 这两个参数中其中一个或两个可以为空, 此时使用 ErrorLevel (见后面) 可以确定是否找到匹配.
X1, Y1 | 需要搜索的矩形区域左上角的 X 和 Y 坐标, 可以为 表达式. 如果没有使用 CoordMode, 默认情况下坐标相对于活动窗口.
X2, Y2 | 需要搜索的矩形区域右下角的 X 和 Y 坐标, 可以为 表达式.如果没有使用 CoordMode, 默认情况下坐标相对于活动窗口.
ColorID | 需要搜索的十进制或十六进制颜色 ID, 使用蓝绿红 (BGR) 格式, 可以为 表达式. 颜色 ID 可以使用 Window Spy (可以从托盘菜单打开) 或 PixelGetColor 确定. 例如: 0x9d6346
Variation | 一个介于 0 和 255 (包含的) 之间的数字, 用于表示此颜色红/绿/蓝通道强度在每个方向上允许的渐变值 (可以为 表达式). 此参数用于需要寻找的颜色渐变值可能变化时. 如果指定 255 为浮动的渐变值, 将匹配所有颜色. 默认渐变值为 0.
Fast|RGB | 此参数可以包含单词 Fast, RGB, 或同时包含两个 (同时包含时它们之间请用空格分隔即 Fast RGB). Fast: 使用快速的搜索方法, 在大多数情况下此方法可以明显减少搜索时消耗的 CPU 时间. 尽管此方法支持颜色深度低至 8位 (256色), 但在 24位或 32位颜色深度下此快速方法执行的更好. 如果屏幕的颜色深度为 16 位或更低, Variation 参数在慢速模式和快速模式的行为可能会有轻微的差异. 最后, 快速模式按行搜索屏幕(从上往下)而不是按列. 因此,如果屏幕上有多个匹配的像素, 快速模式可能找到一个和慢速模式不同的像素. RGB: 把 ColorID 解释为 RGB 值而不是 BGR. 即交换了其中的红色和蓝色的通道.

#### ErrorLevel

如果在指定的区域找到指定的颜色, 则 ErrorLevel 被设置为 0, 没有找到则设置为 1, 而如果在命令执行过程中遇到问题使搜索无法进行则设置为 2.

#### 备注

搜索的目标区域必须是可见的; 换句话说, 无法搜索隐藏在其他窗口背后的窗口区域.而在鼠标指针下方的像素颜色通常可以被检测出来.例外情况是游戏的指针, 在大多数情况下它会隐藏在它下方的任何像素.

对于慢速模式: 默认情况下从区域左上角的像素开始搜索, 在垂直方向上检查下面所有像素以寻找匹配. 如果没有找到匹配, 继续往右逐列搜索, 直至找到一个匹配的像素. 通过交换参数列表中 X1 和 X2 的位置, 可以使默认的从左往右搜索反向进行. 换句话说, 如果 X1 大于 X2, 搜索从右往左进行, 从 X1 开始. 同样, 如果 Y1 大于 Y2, 则从区域底部而不是顶部开始搜索每列像素. 最后, 当需要搜索的目标区域很大而且快速的重复搜索, 这可能会占用大量的 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%.