Differenze tra le versioni di "Selezionare con lo spostamento del mouse un'area di un oggetto"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Il caso in questione è quello in cui si ha un Oggetto (poniamo il caso una ''ImmageView'' posta su un ''Form'') e si desidera selezionare un'area quadrangolare di detto Oggetto con il mouse.
+
Il caso in questione è quello in cui si ha un Oggetto (poniamo il caso una ''ImageView'' posta su un ''Form'') e si desidera selezionare un'area quadrangolare di detto Oggetto con il mouse.
 
<BR>In particolare in questo caso si desidera che la selezione tramite il puntatore del mouse avvenga cliccando sopra un punto dell'Oggetto, del quale selezionare un'area, e poi spostando il puntatore del mouse sull'Oggetto medesimo per definire l'area.
 
<BR>In particolare in questo caso si desidera che la selezione tramite il puntatore del mouse avvenga cliccando sopra un punto dell'Oggetto, del quale selezionare un'area, e poi spostando il puntatore del mouse sull'Oggetto medesimo per definire l'area.
<BR>Inoltre si vuole che durante lo spostamento del puntatore del mouse sia visivamente mostrato il perimetro della definizione in atto dell'area. Tale visualizzazione potrà essere ottenuta, ad esempio, usando un ''Panel'', al quale sia assegnato un utile valore alla sua proprietà "''.Border''".
+
<BR>Inoltre si vuole che durante lo spostamento del puntatore del mouse sia visivamente mostrato il perimetro della definizione in atto dell'area. Tale visualizzazione potrà essere ottenuta, ad esempio, usando un ''Panel'', al quale sia assegnato un utile valore alla sua Proprietà ".Border".
  
 
Mostriamo un semplice e generico codice utile a tale scopo:  
 
Mostriamo un semplice e generico codice utile a tale scopo:  
 
  Private iv As ImageView
 
  Private iv As ImageView
 
  Private pn As Panel
 
  Private pn As Panel
Private x As Short
 
Private y As Short
 
 
   
 
   
 
   
 
   
Riga 28: Riga 26:
 
  '''End'''
 
  '''End'''
 
   
 
   
 +
'''Public''' Sub Imageview1_MouseDown()
 
   
 
   
'''Public''' Sub Imageview1_MouseDown()
 
 
 
  x = Mouse.X
 
  y = Mouse.Y
 
 
 
 
  <FONT Color=gray>' ''Si usa un "Panel" per rendere evidente e visibile l'area che si andrà definendo:''</font>
 
  <FONT Color=gray>' ''Si usa un "Panel" per rendere evidente e visibile l'area che si andrà definendo:''</font>
 
   With pn = New Panel(Me) As "Pannello"
 
   With pn = New Panel(Me) As "Pannello"
Riga 41: Riga 35:
 
     .Background = Color.SetRGB(Color.Yellow, 200, 200, 0, 200)
 
     .Background = Color.SetRGB(Color.Yellow, 200, 200, 0, 200)
 
   End With
 
   End With
 
+
 
  '''End'''
 
  '''End'''
 
   
 
   
 
  '''Public''' Sub Imageview1_MouseMove()
 
  '''Public''' Sub Imageview1_MouseMove()
 
+
 
  <FONT Color=gray>' ''Lo spostamento del mouse, mantenendo cliccato, dimensiona dinamicamente il "Panel", definendo così anche l'area da individuare dell'Oggetto "ImageView":''</font>
 
  <FONT Color=gray>' ''Lo spostamento del mouse, mantenendo cliccato, dimensiona dinamicamente il "Panel", definendo così anche l'area da individuare dell'Oggetto "ImageView":''</font>
 
   With pn
 
   With pn
     .X = x
+
     .X = Mouse.StartX
     .Y = y
+
     .Y = Mouse.StartY
     .W = Mouse.X - x
+
     .W = Mouse.X - Mouse.StartX
     .H = Mouse.Y - y
+
     .H = Mouse.Y - Mouse.StartY
 
   End With
 
   End With
 
+
 
  '''End'''
 
  '''End'''

Versione attuale delle 17:42, 25 giu 2023

Il caso in questione è quello in cui si ha un Oggetto (poniamo il caso una ImageView posta su un Form) e si desidera selezionare un'area quadrangolare di detto Oggetto con il mouse.
In particolare in questo caso si desidera che la selezione tramite il puntatore del mouse avvenga cliccando sopra un punto dell'Oggetto, del quale selezionare un'area, e poi spostando il puntatore del mouse sull'Oggetto medesimo per definire l'area.
Inoltre si vuole che durante lo spostamento del puntatore del mouse sia visivamente mostrato il perimetro della definizione in atto dell'area. Tale visualizzazione potrà essere ottenuta, ad esempio, usando un Panel, al quale sia assegnato un utile valore alla sua Proprietà ".Border".

Mostriamo un semplice e generico codice utile a tale scopo:

Private iv As ImageView
Private pn As Panel


Public Sub Form_Open()
 
 With Me
   .X = 0
   .Y = 0
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
 End With
 
 With iv = New ImageView(Me) As "Imageview1"
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H
 End With
  
End

Public Sub Imageview1_MouseDown()

' Si usa un "Panel" per rendere evidente e visibile l'area che si andrà definendo:
 With pn = New Panel(Me) As "Pannello"
' La visualizzazione dell'area che si va definendo sarà consentita attribuendo un bordo al "Panel":
   .Border = Border.Plain
' Volendo, si può dare anche un leggero colore semitrasparente al "Panel" che si va definendo:
   .Background = Color.SetRGB(Color.Yellow, 200, 200, 0, 200)
 End With

End

Public Sub Imageview1_MouseMove()

' Lo spostamento del mouse, mantenendo cliccato, dimensiona dinamicamente il "Panel", definendo così anche l'area da individuare dell'Oggetto "ImageView":
 With pn
   .X = Mouse.StartX
   .Y = Mouse.StartY
   .W = Mouse.X - Mouse.StartX
   .H = Mouse.Y - Mouse.StartY
 End With

End