Differenze tra le versioni di "Disegnare in una DrawingArea più linee rette con il mouse"

Da Gambas-it.org - Wikipedia.
 
Riga 7: Riga 7:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)
 
   DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub DrawingArea1_Draw()   
+
  Public Sub DrawingArea1_Draw()   
 
    
 
    
 
   Dim i As Integer  
 
   Dim i As Integer  
Riga 30: Riga 30:
 
   End With       
 
   End With       
 
    
 
    
  '''End''' 
+
  End
 
    
 
    
  '''Public''' Sub DrawingArea1_MouseDown()     
+
   
 +
Public Sub DrawingArea1_MouseDown()     
 
    
 
    
 
   StartX = Mouse.X   
 
   StartX = Mouse.X   
Riga 39: Riga 40:
 
   OldY = StartY         
 
   OldY = StartY         
 
    
 
    
  '''End'''
+
  End
 
    
 
    
  '''Public''' Sub DrawingArea1_MouseMove()  
+
   
 +
Public Sub DrawingArea1_MouseMove()  
 
    
 
    
 
   OldX = Mouse.X   
 
   OldX = Mouse.X   
Riga 48: Riga 50:
 
   DrawingArea1.Refresh()     
 
   DrawingArea1.Refresh()     
 
    
 
    
  '''End''' 
+
  End
 +
 
   
 
   
  '''Public''' Sub DrawingArea1_MouseUp()  
+
  Public Sub DrawingArea1_MouseUp()  
 
    
 
    
 
   punti.Push(StartX)  
 
   punti.Push(StartX)  
Riga 57: Riga 60:
 
   punti.Push(OldY)
 
   punti.Push(OldY)
 
      
 
      
  '''End'''
+
  End
  
  

Versione attuale delle 11:41, 27 giu 2024

Per disegnare su una DrawingArea con il mouse due o più linee rette in modo tale che, le linee precedentemente disegnate, restino visibili sulla DrawingArea ad ogni disegno di una nuova linea, potremo adottare un codice come il seguente: [Nota 1]

Private OldX As Single   
Private OldY As Single   
Private StartX As Single   
Private StartY As Single   
Private punti As New Integer[]


Public Sub Form_Open()

 DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)
  
End


Public Sub DrawingArea1_Draw()   
  
 Dim i As Integer 
 
 With Paint
   .Brush = .Color(Color.Red)
   .MoveTo(StartX, StartY)
   .LineTo(OldX, OldY)
   For i = 0 To punti.Max Step 4 
     .MoveTo(punti[i], punti[i + 1])
     .LineTo(punti[i + 2], punti[i + 3])
   Next
   .Stroke
   .End
 End With       
 
End
 

Public Sub DrawingArea1_MouseDown()     
  
  StartX = Mouse.X   
  StartY = Mouse.Y   
  OldX = StartX   
  OldY = StartY         
  
End
  

Public Sub DrawingArea1_MouseMove() 
  
  OldX = Mouse.X   
  OldY = Mouse.Y   

  DrawingArea1.Refresh()     
  
End


Public Sub DrawingArea1_MouseUp() 
  
  punti.Push(StartX) 
  punti.Push(StartY) 
  punti.Push(OldX) 
  punti.Push(OldY)
   
End


Note

[1] Il codice è stato realizzato dall'utente Gianluigi del forum gambas-it.org .