IntersectRect

いやー、こんにちは、インターセクトレクトです。
インターセプトレクトじゃないんですよ、わかってますね。

レクト つまり、IntersectRect は、ふたつの長方形が重なっている部分を調べるためにあるんですね。
しかも名前に Rect がついているからには長方形は Rect で表現しないといけないんですね。
まあ Rect なんて簡単なものです。
左上の座標が left, top で、右下の座標が right, bottom の構造体なんですね。
傾いた長方形はダメです。


そろそろ関数の使い方を説明しなければならないようですね。
本当なら Rect についてずっと語り続けたかったのですがね。
まあ、こんな風に使ってみてください。

IntersectRect(lprcDst, lprcSrc1, lprcSrc2)

またわけのわからんものが現れましたね。
要するに、lprcDstlprcSrc1lprcSrc2 も、全部 Rect へのポインタなんですよね。
VB で使うんなら ByRef を、C などで使うんなら & を使えっちゅー話です。

重なりそれで、これを使ったらどうなるのかって言うと、lprcDst の中に lprcSrc1lprcSrc2 が重なっている部分が入るんですね。
左の図で言うと、黒い四角が lprcSrc1lprcSrc2 で、赤いのが lprcDst なんですね。
もし全然重なっていないなんて事態になってしまったら lprcDst の全ての成分が0になっちゃいます。
ついでに言うとね、戻り値もその時0になります。

こういうのは図を描くとわかりやすいんだけど、今は図が無いから文字だけで理解してください。
別に理解しなくてもいいけど。

図が増えたんです。よかったですね。

02/08/22追加分

でもやっぱり理解した方がいいと思うので、サンプルを用意しときます。

02/09/09追加分

サンプルを使ってみてわかったんだけど、lprcSrc1lprcSrc2 は Rect として変なものだったらいけないんですよね。
例えばね、右側の座標が left に入ってちゃ重なっている場所があってもダメなんです。
点や線になっててもやっぱりダメなんです。
サンプルで試してみてくださいね。

VB用サンプル(2.07kilobyte)