CHKIMG用の画像取得方法

      2016/05/15

CHKIMG関数 で使う画像の取得方法。

画面をビットマップで保存する

マクロに使いたい画像が表示されている画面でPrint screenキーを押します。
(ノートPCなどではPrtScと表記されています)

押すとスクリーンショットがクリップボードに入るので、ペイントを起動して貼り付けます。

任意の範囲を選び、24色ビットマップで保存しましょう。

画像の大きさ関する注意点

画像はどのような大きさでもいいですが、基本的に 3px x 3px 程度で十分です。
ヒットする場所が複数あり困る時は少し大きくしたら良いでしょう。

画像の扱いに関する注意点

3px × 3px の画像と言うのはつまりこういうことです。
(グレーの線部分は1pxのイメージを判りやすくする為のものです 実際にはありません)

bitmap

人間の目からいかに同じように見えようと、CHKIMG関数 では1pxでも違いがあるとFalseです。

色無視オプションについて


CHKIMG関数には色無視オプションがあります。

CHKIMG(image.bmp, -1) //-1で色を無視する

色無視オプションを設定するとどうなるか。

3px × 3pxの画像は先ほどはこのようになっていました。

bitmap

色無視オプションを使うと、色でなく形で判別します。
そのため、以下の画像は色無視オプションすると同じものとして扱われます。

bitmapbitmap-2bitmap-2

以下の画像は一見同じに見えますが、右上のドットだけ微妙に色を変えました。
この場合は形が異なるため一致しません。

bitmap-ng

色無視オプションでは、画像の色に関わらず、形で一致しているか判別するようになります。

同じ形が画面上にいくつ存在しているかは目視確認できないレベルです。
ですから-1オプションを使うと予想外の数が存在して、意図しない値がG_IMG_X,G_IMG_Yに格納されることがあります。
出現範囲が限られている場合はCHKIMG関数のオプションでサーチ範囲を指定するのがベターでしょう。

動き(描写)が複雑なゲームマクロでの色無視オプションはあまり実用的ではありません。
ゲームだと霧や雨などの天候エフェクトがうっすらかかるだけでも形が変わるからです。

それゆえ、形で一致する場合は色無視がなくても一致しちゃう場合が多いです。

上手く画像が見つからない場合は別のアプローチを考えたいところです。

※この項目はメールでの質問を元に<2016/03/02>に追記しました。

「もっと詳しく!」「こうできないの?」この記事に関連する質問や要望があればコメントかメールで聞いてね!

 - TIPS , , , , , , , , , , , , , ,