Ce face Rectangle.containsPoint
r.containsPoint(p) returnează true dacă punctul p este în dreptunghi. Marginile sunt incluse: un punct exact pe right sau bottom este considerat înăuntru.
Este folosit la verificarea unui clic pe un buton, la detectarea coliziunilor în jocuri sau la filtrarea punctelor dintr-o zonă de pe hartă. Pentru un dreptunghi întreg există containsRectangle.
Parametri
| Parametru | Descriere |
|---|---|
another |
Punctul verificat. |
Ce returnează
true dacă punctul este în interior sau pe margine, altfel false.
Exemple
Exemplul 1: Clic pe un buton
import 'dart:math';
void main() {
const buton = Rectangle(100, 200, 80, 30);
final clicuri = [const Point(120, 210), const Point(180, 230), const Point(90, 210)];
for (final c in clicuri) {
print('Clic la (${c.x}, ${c.y}): ${buton.containsPoint(c) ? 'pe buton' : 'pe lângă'}');
}
}
Rezultat
Clic la (120, 210): pe buton
Clic la (180, 230): pe buton
Clic la (90, 210): pe lângă
Exemplul 2: Orașe dintr-o zonă de pe hartă
Coordonate aproximative (longitudine, latitudine) și o zonă dreptunghiulară pentru Moldova.
import 'dart:math';
void main() {
final zona = Rectangle.fromPoints(const Point(25.5, 46.0), const Point(28.2, 48.3));
const orase = {
'Iași': Point(27.6, 47.2),
'Suceava': Point(26.3, 47.7),
'Cluj': Point(23.6, 46.8),
};
orase.forEach((nume, loc) {
print('$nume: ${zona.containsPoint(loc)}');
});
print(zona.containsRectangle(Rectangle(26, 47, 1, 1)));
}
Rezultat
Iași: true
Suceava: true
Cluj: false
true
Greșeli frecvente
- Uiți că axa verticală crește în jos: un dreptunghi cu
top = 0șiheight = 50conținey = 40, nuy = -40.
Comenzi înrudite
Rectangle: Un dreptunghi cu laturile paralele cu axele, dat prin colțul stânga-sus, lățime (width) și înălțime (height).Rectangle.intersects: intersects spune dacă două dreptunghiuri se suprapun; intersection returnează zona comună sau null.Point: Un punct în plan, cu coordonatele x și y; suportă adunare, scădere și comparare cu ==.