フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: 2つの矩形が重なっているか判定する
DEKO
管理者
投稿数: 2693
2つの矩形が重なっているか判定する
on: 2016/12/26 18:00 Mon

XE2 以降では TRect / TRectF のメソッドとして IntersectsWith() が用意されており、これを用いて当たり判定を行う事ができます。

procedure TForm1.Button1Click(Sender: TObject);
var
Rect1, Rect2: TRect;
begin
Rect1 := Rect(0, 0, 100, 100);
Rect2 := Rect(50, 50, 150, 150);

if Rect1.IntersectsWith(Rect2) then
ShowMessage('Hit')
else
ShowMessage('Safe');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Rect1, Rect2: TRectF;
begin
Rect1 := RectF(0, 0, 10.0, 10.0);
Rect2 := RectF(5.0, 5.0, 15.0, 15.0);

if Rect1.IntersectsWith(Rect2) then
ShowMessage('Hit')
else
ShowMessage('Safe');
end;

 
[TRect.IntersectsWith]
http://docwiki.embarcadero.com/Libraries/ja/System.Types.TRect.IntersectsWith

[TRectF.IntersectsWith]
http://docwiki.embarcadero.com/Libraries/ja/System.Types.TRectF.IntersectsWith

DEKO
管理者
投稿数: 2693
Re: 2つの矩形が重なっているか判定する
on: 2016/12/26 20:45 Mon

XE 以前では Windows API を使います。

[IntersectRect]
https://msdn.microsoft.com/ja-jp/library/cc410420.aspx

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.028 sec.