U.W.S.C

色の範囲チェック

  • 概要
    指定座標の指定色が指定範囲内であるか確認します

  • 構文
    CheckColorScope(X座標, Y座標, 色要素, 基準値, 範囲)

  • 引数
    • X座標
      X座標を指定します

    • Y座標
      Y座標を指定します

    • 色要素
      色要素("R", "G" or "B")を指定します

    • 基準値
      判定基準となる値を指定します

    • 範囲
      許容する範囲を指定します。

      192から前後20まで認めるのであれば、
      基準値に192、ここに20を指定してください

  • 返値
    指定色が指定範囲内であれば True, それ以外の場合は False
Function CheckColorScope(PosX, PosY, Element, BaseValue, Scope)

    // 指定された色要素の値を取得
    Select Element
        Case "R"
            ElementValue = PeekColor(PosX, PosY) And $FF;
        Case "G"
            ElementValue = (PeekColor(PosX, PosY) And $FF00) / $100;
        Case "B"
            ElementValue = (PeekColor(PosX, PosY) And $FF0000) / $10000;
        Default
            Result = False; Return;
    SelEnd

    // 色要素の値が、指定範囲内であれば True を返す
    Ifb (ElementValue >= BaseValue - Scope) And (ElementValue <= BaseValue + Scope) Then
        Result = True;
    Else
        Result = False;
    EndIf

Fend

この関数はあいまいな判定でも十分だという場合に使えます。
例えば、指定座標がかなり青ければクリックしたいといった場合
次のように記述することで、座標(100, 100)の青要素が180255であれば、
目的の処理(今回の例では、左クリック)を実行するという制御が実現できます。

また、GetColorElementGetBrightnessと併用することで、
周囲よりも赤いとき、周囲よりも暗いとき、といった制御も実現できます。

    // 座標(100, 100)の青要素が180〜255であれば左クリック
    Ifb CheckColorScope(100, 100, "B", 220, 40) Then
        BTN(LEFT, CLICK, 20);
    EndIf


07/12/20
スクリプト公開