Cliccare in un oggetto qualsiasi o in una immagine suddivisi in rettangoli

Da Gambas-it.org - Wikipedia.

Poniamo il caso di avere un Controllo qualsiasi, oppure un'immagine (caricata ovviamente in apposito Oggetto capace di contenerla) suddivisi in vari rettangoli e/o quadrati. Vogliamo sapere, quando si clicca su detto oggetto o immagine, in quale rettangolo/quadrato si è cliccato.

Per delimitare le aree quadrilatere ad angoli retti sull'Oggetto, o sull'immagine, faremo uso della Classe Rect, che rappresenta un rettangolo avente coordinate di valore intero.

Facciamo l'esempio di avere su un Form tre rettangoli non visibili (ossia privi di perimetro visibile). Bisognerà cliccare sul Form alla ricerca dei tre rettangoli invisibili. Se si cliccherà su un punto incluso all'interno di uno dei tre rettangoli definiti, allora sarà mostrato in console in quale area/rettangolo si è cliccato.

' Creiamo una variabile array di tipo "Rect", nella quale inseriremo le coordinate e le dimensioni afferenti ai tre rettagoli:
Private r As Rect[]


Public Sub Form_Open()

 With r = New Rect[]
   .Add(Rect(0, 0, 150, 100))
   .Add(Rect(0, 150, 150, 100))
   .Add(Rect(200, 0, 150, 100))
 End With
 
End


Public Sub Form_MouseUp()

 Dim b As Byte
 
' Se si è cliccato su un punto incluso all'interno di uno dei tre rettangoli definiti, allora sarà mostrato in console in quale area/rettangolo si è cliccato:
 For b = 0 To r.Max
   If r[b].Contains(Mouse.X, Mouse.Y) Then Print "Rettangolo n. "; b
 Next
 
End