# PixelSearch

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

    PixelSearch &OutputVarX, &OutputVarY, X1, Y1, X2, Y2, ColorID , Variation

## 参数

&OutputVarX, &OutputVarY

  类型: VarRef

  存储与 ColorID 匹配的第一个像素的 X 和 Y 坐标的变量的引用(如果没有找到匹配的像素, 则变量为空). 除非使用 CoordMode 来改变坐标, 否则坐标是相对于活动窗口的.

X1, Y1

  类型: 整数

  要搜索的矩形区域的起始角的 X 和 Y 坐标. 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置.

X2, Y2

  类型: 整数

  搜索的矩形区域的结束角的 X 和 Y 坐标. 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置.

ColorID

  类型: 整数

  要搜索的颜色 ID. 通常用红绿蓝(RGB) 格式的十六进制数表示. 例如: `0x9d6346`. 颜色 ID 可以通过 Window Spy(可从托盘菜单访问) 或 PixelGetColor 来确定.

Variation

  类型: 整数

  介于 0 和 255(包含) 之间的数字, 用于表示每个像素颜色红/绿/蓝通道强度在任一方向上允许的渐变值. 如果所查找的颜色并不总是完全相同的色度, 这个参数很有用. 如果指定 255 为渐变值, 则匹配所有颜色. 默认渐变值为 0.

## 返回值

类型: 整数(布尔值)

如果在指定的区域内找到了指定颜色, 该函数返回 1(true), 如果没有找到, 则返回 0(false).

## 错误处理

如果有问题导致函数无法进行搜索, 则抛出 OSError.

## 备注

要搜索的区域必须是可见的; 换句话说, 不可能搜索隐藏在另一个窗口后面的窗口区域. 相比之下, 鼠标光标下方的像素通常可以被检测到. 游戏中的光标是个例外, 在大多数情况下, 游戏中的光标会隐藏其下方的任何像素.

虽然支持低至 8 位(256-色) 的颜色深度, 但快速模式在 24 位或 32 位颜色中的表现要好得多.

搜索从 X1 和 Y1 指定的坐标开始, 并检查 X1 到 X2 这一行的所有像素是否匹配. 如果在那里没有找到匹配的像素, 则继续向 Y2 逐行搜索, 直到找到匹配的像素.

搜索顺序取决于参数的顺序. 换句话说, 如果 X1 大于 X2, 搜索将从右到左, 从 X1 列开始. 同样, 如果 Y1 大于 Y2, 则将从下往上搜索.

如果要搜索的区域比较大而且搜索频率比较高, 可能会消耗大量的 CPU 时间. 为了缓解这种情况, 要尽量减少区域的大小.

## 相关

PixelGetColor, ImageSearch, CoordMode, MouseGetPos

## 示例

在活动窗口的区域中搜索一个像素, 并在 Px 和 Py 中存储与指定颜色相匹配(渐变值为 3) 第 1 个像素的 X 和 Y 坐标.

    if PixelSearch(&Px, &Py, 200, 200, 300, 300, 0x9d6346, 3)
        MsgBox "A color within 3 shades of variation was found at X" Px " Y" Py
    else
        MsgBox "That color was not found in the specified region."

dftg