Cliccare in un oggetto grafico 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:

' 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 si mostra 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