Differenze tra le versioni di "Ruotare una figura piana intorno a una circonferenza in una DrawingArea"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il caso è quello in cui si disegna in una ''DrawingArea'' una figura piana (ad esempio un cerchio) che ruota intorno a una circonferenza. In questo esempio si utilizzeranno...") |
|||
Riga 1: | Riga 1: | ||
Il caso è quello in cui si disegna in una ''DrawingArea'' una figura piana (ad esempio un cerchio) che ruota intorno a una circonferenza. | Il caso è quello in cui si disegna in una ''DrawingArea'' una figura piana (ad esempio un cerchio) che ruota intorno a una circonferenza. | ||
+ | ===Usando i Metodi "Paint.Translate()" e "Paint.Rotate()" per effettuare la rotazione=== | ||
In questo esempio si utilizzeranno i Metodi "Paint.Translate()" e "Paint.Rotate()" per effettuare la rotazione. | In questo esempio si utilizzeranno i Metodi "Paint.Translate()" e "Paint.Rotate()" per effettuare la rotazione. | ||
Private an As Float | Private an As Float | ||
Riga 27: | Riga 28: | ||
.stroke | .stroke | ||
.Translate(DrawingArea1.W / 2, DrawingArea1.H / 2) | .Translate(DrawingArea1.W / 2, DrawingArea1.H / 2) | ||
− | <FONT Color=gray>' ''Un valore positivo dell'angolo di rotazione determina una rotazione in senso antiorario, un valore negativo | + | <FONT Color=gray>' ''Un valore positivo dell'angolo di rotazione determina una rotazione in senso antiorario, mentre un valore negativo determina una rotazione in senso orario:''</font> |
.Rotate(Rad(-an)) | .Rotate(Rad(-an)) | ||
.Brush = .Color(Color.Red) | .Brush = .Color(Color.Red) | ||
.Arc(40, 40, 5, Rad(0), 360, False) | .Arc(40, 40, 5, Rad(0), 360, False) | ||
+ | .Fill | ||
+ | .End | ||
+ | End With | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub Timer1_Timer() | ||
+ | |||
+ | Inc an | ||
+ | DrawingArea1.Refresh | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | ===Usando una formula trigonometrica per effettuare la rotazione=== | ||
+ | In questo esempio si utilizzerà una formula trigonometrica per effettuare la rotazione. | ||
+ | Private an As Float | ||
+ | |||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | Me.Arrangement = Arrange.Fill | ||
+ | |||
+ | With DrawingArea1 | ||
+ | .X = 0 | ||
+ | .Y = 0 | ||
+ | End With | ||
+ | |||
+ | With Timer1 | ||
+ | .Delay = 10 | ||
+ | .Start | ||
+ | End With | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub DrawingArea1_Draw() | ||
+ | |||
+ | Dim x, y, r, t As Short | ||
+ | |||
+ | x = DrawingArea1.W / 2 | ||
+ | y = DrawingArea1.H / 2 | ||
+ | <FONT Color=gray>' ''Lunghezza del raggio della circonferenza:''</font> | ||
+ | r = 50 | ||
+ | |||
+ | With Paint | ||
+ | .Arc(x, y, r, Rad(0), 360, False) | ||
+ | .stroke | ||
+ | .Brush = .Color(Color.Red) | ||
+ | <FONT Color=gray>' ''In quest'altro caso un valore positivo dell'angolo di rotazione determina una rotazione in senso orario, mentre un valore negativo determina una rotazione in senso antiorario:''</font> | ||
+ | .Arc(x + (r * Cos(Rad(an))), y + (r * Sin(Rad(an))), 5, Rad(0), 360, False) | ||
.Fill | .Fill | ||
.End | .End |
Versione delle 19:19, 2 giu 2021
Il caso è quello in cui si disegna in una DrawingArea una figura piana (ad esempio un cerchio) che ruota intorno a una circonferenza.
Usando i Metodi "Paint.Translate()" e "Paint.Rotate()" per effettuare la rotazione
In questo esempio si utilizzeranno i Metodi "Paint.Translate()" e "Paint.Rotate()" per effettuare la rotazione.
Private an As Float Public Sub Form_Open() Me.Arrangement = Arrange.Fill With DrawingArea1 .X = 0 .Y = 0 End With With Timer1 .Delay = 10 .Start End With End Public Sub DrawingArea1_Draw() With Paint .Arc(DrawingArea1.W / 2, DrawingArea1.H / 2, 50, Rad(0), 360, False) .stroke .Translate(DrawingArea1.W / 2, DrawingArea1.H / 2) ' Un valore positivo dell'angolo di rotazione determina una rotazione in senso antiorario, mentre un valore negativo determina una rotazione in senso orario: .Rotate(Rad(-an)) .Brush = .Color(Color.Red) .Arc(40, 40, 5, Rad(0), 360, False) .Fill .End End With End Public Sub Timer1_Timer() Inc an DrawingArea1.Refresh End
Usando una formula trigonometrica per effettuare la rotazione
In questo esempio si utilizzerà una formula trigonometrica per effettuare la rotazione.
Private an As Float Public Sub Form_Open() Me.Arrangement = Arrange.Fill With DrawingArea1 .X = 0 .Y = 0 End With With Timer1 .Delay = 10 .Start End With End Public Sub DrawingArea1_Draw() Dim x, y, r, t As Short x = DrawingArea1.W / 2 y = DrawingArea1.H / 2 ' Lunghezza del raggio della circonferenza: r = 50 With Paint .Arc(x, y, r, Rad(0), 360, False) .stroke .Brush = .Color(Color.Red) ' In quest'altro caso un valore positivo dell'angolo di rotazione determina una rotazione in senso orario, mentre un valore negativo determina una rotazione in senso antiorario: .Arc(x + (r * Cos(Rad(an))), y + (r * Sin(Rad(an))), 5, Rad(0), 360, False) .Fill .End End With End Public Sub Timer1_Timer() Inc an DrawingArea1.Refresh End