guia8lii_animacion_II

Anuncio
Visual Basic .Net
Guía 08 - Animación de objetos en VB .NET II
36
Practica 51
Dibujar rectangulos con uso de los eventos
Presionar y soltar click para dibujar
Interface
Usamos una ventana vacia
Damos dobleclick en la ventana y luego
Cambiamos los eventos form1_load() por
Form1_MouseDown() y form1_MouseUp()
La codificación
Public Class Form1
Dim rectangulo As Rectangle
Dim Ancho As Integer = 5
Private Sub Form1_MouseDown1(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
' Coordenadas iniciales del rectangulo
rectangulo.X = e.X
rectangulo.Y = e.Y
End Sub
Private Sub Form1_MouseUp1(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
' Determinar ancho y altura del rectangulo
If e.X < rectangulo.X Then
rectangulo.Width = rectangulo.X - e.X
rectangulo.X = e.X
Else
rectangulo.Width = e.X - rectangulo.X
End If
If e.Y < rectangulo.Y Then
rectangulo.Height = rectangulo.Y - e.Y
rectangulo.Y = e.Y
Else
rectangulo.Height = e.Y - rectangulo.Y
End If
' Forzar el repintado de la region ocupada por el rectangulo
Me.Invalidate(rectangulo)
End Sub
Private Sub Form1_Paint1(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles Me.Paint
' dibujar el rectangulo
e.Graphics.DrawRectangle(New Pen(Color.Blue, Ancho), rectangulo)
End Sub
End Class
www.dariolara.com
Guía 08 - Animación de objetos en VB .NET II
Visual Basic .Net
33
Animación de objetos en VB .NET II
Introducción
Presentamos en esta guía algunas animaciones más complejas que exigen algo
de matemáticas, trigonometría, etc.
Practica 45
Animar un pequeño rectángulo
Interface y Propiedades
Timer1: Enabled = True Interval = 100
Codificación
Public Class form1
Dim rectangulo As Rectangle
Dim Ancho As Integer = 5
Dim a%, b%
‘ Cambie el evento form1_load() por el evento form1_paint( …. y copie el
codigo …..
Private Sub form1_Paint1(ByVal sender As Object, ByVal e As ………..
' Dibujar el rectangulo en el evento Paint de form1
e.Graphics.DrawRectangle(New Pen(Color.Blue, Ancho), rectangulo)
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e ……………
' Animar con coordenadas a y b incrementandolas
a=a+1
b=b+1
rectangulo.Height = 10
rectangulo.Width = 10
rectangulo.X = a
rectangulo.Y = b
Me.Invalidate()
End Sub
End Class
www.dariolara.com
Visual Basic .Net
Guía 08 - Animación de objetos en VB .NET II
34
Practica 46
Reloj analógico
Una animación más compleja y con mejor presentación es la que se presenta
como practica en este documento. Consiste en simular un reloj de punteros.
Utilizamos el control Timer para el control de tiempo. La relación de la
propiedad Interval es de 1000 pulsos equivalen aproximadamente a un
segundo.
Nota
Para esta práctica utilizamos una línea trazada desde un punto x1,y1 que
corresponde al centro de la circunferencia del reloj, hasta el punto x2, y2,
el extremo del segundero.
Guía 08 - Animación de objetos en VB .NET II
Visual Basic .Net
35
segundos1 = Second(Now)
angulo1 = (segundos1 * 6 * 6.28 / 360) - (15 * 6 * 6.28 / 360)
radio1 = 100
x2 = x1 + radio1 * Math.Cos(angulo1)
y2 = y1 + radio1 * Math.Sin(angulo1)
Me.Invalidate()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
x1 = 150
y1 = 150
x2 = 150
y2 = 150
End Sub
Private Sub Form1_Paint1(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.DrawLine(Pens.Black, x1, y1, x2, y2)
e.Graphics.DrawEllipse(Pens.Blue, 50, 50, 200, 200)
End Sub
End Class
Nota
Usted debe agregar una imagen de fondo para su reloj
Practicas propuestas
Practica 47
Se propone agregar el minutero y el horario al reloj analógico de la practica anterior
Tenga en cuenta que el horario solo cuenta 12 horas en el recorrido de la circunferencia
de 360 grados, y por tanto el angulo es diferente.
Para el minutero y el horario usamos funciones minute( ) y hour()
Practica 48
Diseñe un cronometro segundero que puede iniciar, detener y reiniciar a cero tanto el
segundero como los segundos en una caja de texto
Esta práctica es para mostrar solo el círculo del reloj y el segundero.
Codificación
Practica 49
Piense en un termómetro de caratula que convierte grados Farenheit a grados Celsius y
viceversa.
Public Class Form1
Dim angulo1!, segundos1!, radio1!, x1!, y1!, x2!, y2!
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Timer1.Tick
TextBox1.Text = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
Practica 50
Diseñe un sistema de plumillas para el parabrisas de un carro. Las plumillas pueden ir
más rápido cuando se controlan con una barra de desplazamiento horizontal
www.dariolara.com
www.dariolara.com
Documentos relacionados
Descargar