| |
|
|
|
Beschreibung:
IntersectRect ermittelt si et wohin sich deux Rechtecke überschneiden.
Deklaration:
DEf @IntersectRect(3) !User32,IntersectRect
paramètre:
1.paramètre: RECT Struktur ou bien 16Byte grand Bereichsvariable, qui qui Eckpunkte des „Überschneidungsrechtecks“ qui Rechtecke aus paramètre 2 et 3 angibt.=> -Byte 0-3 = X-Koordinate qui linken oberen coin des Rechtecks. -Byte 4-7 = Y-Koordinate qui linken oberen coin des Rechtecks. -Byte 8-11 = X-Koordinate qui rechten unteren coin des Rechtecks. -Byte 12-15 = Y-Koordinate qui rechten unteren coin des Rechtecks. 2.paramètre: RECT Struktur ou bien 16Byte grand Bereichsvariable, qui qui Eckpunkte des ersten Rechtecks angibt.=> -Byte 0-3 = X-Koordinate qui linken oberen coin des Rechtecks. -Byte 4-7 = Y-Koordinate qui linken oberen coin des Rechtecks. -Byte 8-11 = X-Koordinate qui rechten unteren coin des Rechtecks. -Byte 12-15 = Y-Koordinate qui rechten unteren coin des Rechtecks. 3.paramètre: RECT Struktur ou bien 16Byte grand Bereichsvariable, qui qui Eckpunkte des zweiten Rechtecks angibt.=> -Byte 0-3 = X-Koordinate qui linken oberen coin des Rechtecks. -Byte 4-7 = Y-Koordinate qui linken oberen coin des Rechtecks. -Byte 8-11 = X-Koordinate qui rechten unteren coin des Rechtecks. -Byte 12-15 = Y-Koordinate qui rechten unteren coin des Rechtecks.
Rückgabewert:
si sich qui Rechtecke aus paramètre 2 et 3 überschneiden, wird 1 retour. Ansonsten wird 0 retour.
Beispiele:
KompilierenMarqueSéparationDeclare Bild$,Random1%,Random2%,X1&,x2&,Ende%,Rect1#,Crash&,Rect2#,RectInt#
DEf @IntersectRect(3) !"User32","IntersectRect"
CHDIR $WINPATH
Let Bild$=@FindFirst$("*.BMP")
Windowstyle 31
Windowtitle "Kollisionsabfrage"
Window 0,0-640,440
Let x1&=0
Let X2&=600
MCLS 700,500
Randomize
Let Random1%=@RND(15)
Let Random2%=@RND(15)
Whilenot Ende%
Sleep 100
Startpaint -1
CLS
LoadSizedBmp Bild$, x1&,100-30,30;0
LoadSizedBmp Bild$, x2&,100-30,30;0
endpaint
MCopyBmp 0,0-640,480> 0,0;0
LET Crash&=0
Dim Rect1#,16
Dim Rect2#,16
Dim RectInt#,16
Long Rect1#,0=X1&
Long Rect1#,4=100
Long Rect1#,8=X1&+30
Long Rect1#,12=100+30
Long Rect2#,0=X2&
Long Rect2#,4=100
Long Rect2#,8=X2&+30
Long Rect2#,12=100+30
Clear RectInt#
LET Crash&=@IntersectRect(RectInt#,Rect1#,Rect2#)
Locate 0,0
Print @LONG(RectInt#,0)
Print @LONG(RectInt#,4)
Print @LONG(RectInt#,8)
Print @LONG(RectInt#,12)
Dispose Rect1#
Dispose Rect2#
Dispose RectInt#
IF Crash&>0
Let ENDE%=1
@Messagebox("Boing","Bums",64)
endif
LET X1&=X1&+Random1%
LET X2&=X2&-Random2%
/../../references-fonction/XProfan/Wend/'>Wend
[keywords:9840bb5ea8] Überschneidung Rechtecke überschneiden Bereiche decken Überlappung überlappen [/keywords:9840bb5ea8] |
|
|
| |
|
|