Differenze tra le versioni di "Cliccare in un oggetto qualsiasi o in una immagine suddivisi in rettangoli"

Da Gambas-it.org - Wikipedia.
 
Riga 3: Riga 3:
 
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.
 
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:
+
Facciamo l'esempio di avere su un ''Form'' tre rettangoli non visibili (ossia privi di perimetro visibile):
 
  <FONT color=gray>' ''Creiamo una variabile array di tipo "Rect", nella quale inseriremo le coordinate e le dimensioni afferenti ai tre rettagoli:''</font>
 
  <FONT color=gray>' ''Creiamo una variabile array di tipo "Rect", nella quale inseriremo le coordinate e le dimensioni afferenti ai tre rettagoli:''</font>
 
  Private r As Rect[]
 
  Private r As Rect[]
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   With r = New Rect[]
 
   With r = New Rect[]
Riga 16: Riga 16:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub Form_MouseUp()
+
   
 +
Public Sub Form_MouseUp()
 
   
 
   
 
   Dim b As Byte
 
   Dim b As Byte
 
    
 
    
 
  <FONT color=gray>' ''Se si è cliccato su un punto incluso all'interno di uno dei tre rettangoli definiti, allora si mostra in quale area/rettangolo si è cliccato:''</font>
 
  <FONT color=gray>' ''Se si è cliccato su un punto incluso all'interno di uno dei tre rettangoli definiti, allora si mostra in quale area/rettangolo si è cliccato:''</font>
  For b = 0 To r.Max
+
  For b = 0 To r.Max
    If r[b].Contains(Mouse.X, Mouse.Y) Then Print "Rettangolo n. "; b
+
    If r[b].Contains(Mouse.X, Mouse.Y) Then Print "Rettangolo n. "; b
  Next
+
  Next
 
    
 
    
  '''End'''
+
  End

Versione delle 04:17, 13 ott 2023

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):

' 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