昨日までの修正をマルチスクリーン環境で試してみる。
(1) 範囲選択の初期位置がおかしい件
これは問題なし。スクリーン座標系の情報を変換した結果を使い、意図通りの位置(メイン画面の中心)に表示できている。
(2) 範囲選択がうまく働かない件
これは問題あり。Y軸方向は問題無いがX軸方向で挙動がおかしい。そこで先日の数式を見直してみとX値を求める箇所で符号が逆になっているのに気が付いた。
(誤)cx1 = lx1 - sx1
(正)cx1 = lx1 + sx1
これではキャプチャしても全然変な場所を切り抜いているわけだ。符号を直してやりなおしたところ問題なくキャプチャできた。
メインとサブ画面について一通りの位置関係で範囲選択を試したところ問題無いことが確認できた。
数式の最終版は次のようになる。
・スクリーン座標系上での全画面範囲(左下)-(右上):(sx1, sy1)-(sx2, xy2)
・メイン画面のサイズ(幅・高さ):(sw, sh)
・ローカル座標系上でキャプチャした範囲選択の開始点(左上):(lx1, ly1)
・CGWindow関数へ渡す開始点(左上):(cx1,cy1)
cx1 = lx1 + sx1
cy1 = ly1 - (sy2 - sh)
- - - -
マルチスクリーンがらみの問題はまだある。なのでバグ修正はもう少し続く。