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

Da Gambas-it.org - Wikipedia.
 
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
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.
 
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.
+
Per delimitare le aree quadrilatere ad angoli retti sull'Oggetto, o sull'immagine, faremo uso della Classe '''[https://gambaswiki.org/wiki/comp/gb.qt4/rect?l=it 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). 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.
 
  <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 sarà mostrato in console 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 attuale delle 13:22, 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). 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