Disegnare in una DrawingArea un rombo: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
Di seguito mostreremo un possibile codice per disegnare un Rombo in una ''DrawingArea''.
Di seguito mostreremo un possibile codice per disegnare un Rombo in una ''DrawingArea''.
 
  Private DrawingArea1 As DrawingArea
I 4 vertici del Rombo sono stati correttamente individuati su una circonferenza ideale, alla quale detti vertici appartengono,
<BR>E' possibile variare la dimensione del Rombo, modificando il raggio della circonferenza, sulla quale i suoi vertici insistono.
Private DrawingArea1 As DrawingArea
Private Const <FONT Color=#B22222>RAGGIO</font> As Single = 100.0
Private Const ROMBO As Byte = 4
Private coord As Single[]
Private pol As New Single[]
   
   
   
   
Riga 23: Riga 16:
   
   
   
   
  Public Sub Form_Arrange()
  Public Sub DrawingArea1_Draw()
   
   
   coord = [DrawingArea1.W / 2, DrawingArea1.H / 2]
   Dim cx As Float = DrawingArea1.W / 2           <FONT Color=gray>' ''Centro X''</font>
  Dim cy As Float = DrawingArea1.H / 2           <FONT Color=gray>' ''Centro Y''</font>
  Dim width As Float = DrawingArea1.W * 0.4      <FONT Color=gray>' ''Larghezza del rombo''</font>
  Dim height As Float = DrawingArea1.H * 0.3      <FONT Color=gray>' ''Altezza del rombo''</font>
  Dim puntoRaggio As Float = 5                    <FONT Color=gray>' ''Raggio del punto centrale''</font>
   
   
   Dim gradi As Single[] = [0.0, 90.0, 180.0, 270.0]
   Dim points As New PointF[4]
  For t As Byte = 0 To ROMBO - 1
    pol.Push(RAGGIO * Cos(Rad(gradi[t])))
    pol.Push(RAGGIO * Sin(Rad(gradi[t])))
  Next
   
   
End
  points[0] = New PointF(cx, cy - height / 2)    <FONT Color=gray>' ''Vertice superiore''</font>
  points[1] = New PointF(cx + width / 2, cy)      <FONT Color=gray>' ''Vertice destro''</font>
  points[2] = New PointF(cx, cy + height / 2)    <FONT Color=gray>' ''Vertice inferiore''</font>
  points[3] = New PointF(cx - width / 2, cy)      <FONT Color=gray>' ''Vertice sinistro''</font>
   
   
  With Paint
    .Brush = Paint.Color(Color.Black)
    .LineWidth = 2
   
   
  Public Sub DrawingArea1_Draw()
  <FONT Color=gray>' ''Disegna il rombo:''</font>
    .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
   
   
  With Paint
<FONT Color=gray>' ''Disegna il punto nero al centro:''</font>
     .Arc(coord[0], coord[1], 2, Rad(0), Rad(360), False)
    .Brush = Paint.Color(Color.Black)
     .Ellipse(cx - puntoRaggio, cy - puntoRaggio, puntoRaggio * 2, puntoRaggio * 2)
     .Fill
     .Fill
    .Polygon([(coord[0] + pol[0]) - 40, coord[1] + pol[1], coord[0] + pol[2], coord[1] + pol[3], (coord[0] + pol[4]) + 40, coord[1] + pol[5], coord[0] + pol[6], coord[1] + pol[7]])
    .Stroke
    .End
   End With
   End With
   
   
  End
  End

Versione delle 22:02, 27 lug 2025

Di seguito mostreremo un possibile codice per disegnare un Rombo in 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            ' Centro X
 Dim cy As Float = DrawingArea1.H / 2            ' Centro Y
 Dim width As Float = DrawingArea1.W * 0.4       ' Larghezza del rombo
 Dim height As Float = DrawingArea1.H * 0.3      ' Altezza del rombo
 Dim puntoRaggio As Float = 5                    ' Raggio del punto centrale

 Dim points As New PointF[4]

 points[0] = New PointF(cx, cy - height / 2)     ' Vertice superiore
 points[1] = New PointF(cx + width / 2, cy)      ' Vertice destro
 points[2] = New PointF(cx, cy + height / 2)     ' Vertice inferiore
 points[3] = New PointF(cx - width / 2, cy)      ' Vertice sinistro

 With Paint
   .Brush = Paint.Color(Color.Black)
   .LineWidth = 2

' Disegna il rombo:
   .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

' Disegna il punto nero al centro:
   .Brush = Paint.Color(Color.Black)
   .Ellipse(cx - puntoRaggio, cy - puntoRaggio, puntoRaggio * 2, puntoRaggio * 2)
   .Fill
 End With

End