Disegnare in una DrawingArea un romboide: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(Creata pagina con "Di seguito mostreremo un possibile codice per disegnare un Romboide su una ''DrawingArea''. I 5 vertici del Pentagono regolare sono stati correttamente individuati su una cir...")
 
Nessun oggetto della modifica
 
(6 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Di seguito mostreremo un possibile codice per disegnare un Romboide su una ''DrawingArea''.
Di seguito mostreremo un possibile codice per disegnare un Romboide su una ''DrawingArea''.
I 5 vertici del Pentagono regolare sono stati correttamente individuati su una circonferenza ideale, alla quale detti vertici appartengono,
<BR>E' possibile variare la dimensione del Pentagono, modificando il raggio della circonferenza, sulla quale i suoi vertici insistono.
  Private DrawingArea1 As DrawingArea
  Private DrawingArea1 As DrawingArea
  Private Const RAGGIO As Single = 100.0
   
  Private Const ROMBOIDE As Byte = 4
   
Private coord As Single[]
Private pol As New Single[]
 
 
  Public Sub Form_Open()
  Public Sub Form_Open()
   
   
   With Me
   With Me
     .W = Screen.AvailableWidth
     .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight)
    .H = Screen.AvailableHeight
     .Arrangement = Arrange.Fill
     .Arrangement = Arrange.Fill
   End With
   End With
Riga 23: Riga 15:
  End
  End
   
   
Public Sub Form_Arrange()
   
   
   coord = [DrawingArea1.W / 2, DrawingArea1.H / 2]
Public Sub DrawingArea1_Draw()
   Dim cx As Float = DrawingArea1.W / 2
  Dim cy As Float = DrawingArea1.H / 2
   
   
   Dim gradi As Single[] = [0.0, 90.0, 180.0, 270.0]
<FONT Color=gray>' ''Dimensioni del Romboide:''</font>
   For t As Byte = 0 To ROMBOIDE - 1
   Dim width As Float = DrawingArea1.W * 0.2
    pol.Push(RAGGIO * Cos(Rad(gradi[t])))
  Dim height As Float = DrawingArea1.H * 0.125
    pol.Push(RAGGIO * Sin(Rad(gradi[t])))
<FONT Color=gray>' ''Spostamento orizzontale per inclinare il romboide:''</font>
  Next
   Dim offset As Float = width * 0.3
   
   
End
  Dim points As New PointF[4]
   
   
  Public Sub DrawingArea1_Draw()
  <FONT Color=gray>' ''Definisce i 4 vertici del romboide senza riempimento:''</font>
  points[0] = New PointF(cx - width / 2 + offset, cy - height / 2)
  points[1] = New PointF(cx + width / 2 + offset, cy - height / 2)
  points[2] = New PointF(cx + width / 2 - offset, cy + height / 2)
  points[3] = New PointF(cx - width / 2 - offset, cy + height / 2)
   
   
   With Paint
   With Paint
     .Arc(coord[0], coord[1], 2, Rad(0), Rad(360), False)
     .Brush = Paint.Color(Color.Black)
     .Fill
     .LineWidth = 2
     .Polygon([(coord[0] + pol[0]) - xs, (coord[1] + pol[1]) - ys, (coord[0] + pol[2]) - xs, (coord[1] + pol[3]) - ys, (coord[0] + pol[4]) - xs - 150, (coord[1] + pol[5]) - ys, (coord[0] + pol[6]) - xs, (coord[1] + pol[7]) - ys])
     .MoveTo(points[0].X, points[0].Y)
    For i As Integer = 1 To 3
      .LineTo(points[i].X, points[i].Y)
    Next
    .LineTo(points[0].X, points[0].Y)
     .Stroke
     .Stroke
    .End
   End With
   End With
   
   
  End
  End

Versione attuale delle 22:31, 27 lug 2025

Di seguito mostreremo un possibile codice per disegnare un Romboide su una DrawingArea.

Private DrawingArea1 As DrawingArea


Public Sub Form_Open()

 With Me
   .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight)
   .Arrangement = Arrange.Fill
 End With
 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.Lighter(Color.Yellow)
 End With

End


Public Sub DrawingArea1_Draw()

 Dim cx As Float = DrawingArea1.W / 2
 Dim cy As Float = DrawingArea1.H / 2

' Dimensioni del Romboide:
 Dim width As Float = DrawingArea1.W * 0.2
 Dim height As Float = DrawingArea1.H * 0.125
' Spostamento orizzontale per inclinare il romboide:
 Dim offset As Float = width * 0.3

 Dim points As New PointF[4]

' Definisce i 4 vertici del romboide senza riempimento:
 points[0] = New PointF(cx - width / 2 + offset, cy - height / 2)
 points[1] = New PointF(cx + width / 2 + offset, cy - height / 2)
 points[2] = New PointF(cx + width / 2 - offset, cy + height / 2)
 points[3] = New PointF(cx - width / 2 - offset, cy + height / 2)

 With Paint
   .Brush = Paint.Color(Color.Black)
   .LineWidth = 2
   .MoveTo(points[0].X, points[0].Y)
   For i As Integer = 1 To 3
     .LineTo(points[i].X, points[i].Y)
   Next
   .LineTo(points[0].X, points[0].Y)
   .Stroke
 End With

End