B4A en español - Juan Antonio Villalpando
(BASIC4Android)
-- Tutorial de B4A --
Volver al índice del tutorial
____________________________
69.- Brújula. Giro de la imagen.
- brujula.zip
- Vamos a ver cómo podemos hacer girar una imagen con objeto de construir una brújula.
- Es conveniente echarle un vistazo a estas páginas:
- Ejemplo del foro con sensores (acelerómetro, orientación, luz, proximidad, presión, temperatura,...)
- 45.- Estudio de la biblioteca Phone (mediante esta biblioteca tenemos acceso a los sensores mediante el objeto PhoneSensors)
- Biblioteca Phone (mediante PhoneSensors podemos utilizar las variables TYPE_ACCELEROMETER, TYPE_ORIENTATION, TYPE_MAGNETIC_FIELD, TYPE_PRESSURE, TYPE_PROXIMITY,...)
- Ejemplo de brújula (en inglés brújula es compass). Bajar el ejemplo DrawNeedle.
- Rotar gráfico en la pantalla, para ello utilizamos la biblioteca del núcleo Darwing.
_____________________
- Designer. Layout.
Designer - Layout
|
|
Creamos mediante el Designer un layout.
Lo llamamos Layout.
Situamos:
ImageView1...... Image File... brujula2.gif
Button1............. Izquierda
Button2............. Derecha
Label1.............. Color de texto: Red
|
Gráficos de la carpeta Files.
|
- Subimos a la carpeta Files estos dos archivos gráficos:
brujula2.gif
brujula.gif |
En funcionamiento. Al pulsar los botones, la imagen gira 6º. |
_______________
- Código.
Copia y pega este código en un nuevo proyecto |
Sub Process_Globals
' Juan Antonio Villapando
' juana1991@yahoo.com
' kio4.com
' abril 2013
End Sub
Sub Globals
Dim Canvas1 As Canvas
Dim brujula As Bitmap
Dim DestRect As Rect
Dim CenterX As Int : CenterX=50%x
Dim CenterY As Int : CenterY=210
Dim paso As Float : paso=6
Dim angulo As Float : angulo=0
Dim Label1 As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
Activity.Color=Colors.White
Dim x, y As Int
brujula.Initialize(File.DirAssets,"brujula.gif")
x = CenterX-brujula.Width/2
y = CenterY-brujula.Height/2
DestRect.Initialize(x, y, x+brujula.Width, y+brujula.Height)
Canvas1.Initialize(Activity)
Canvas1.DrawBitmapRotated(brujula, Null, DestRect, angulo)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Button1_Click
angulo = angulo - paso
Canvas1.DrawBitmapRotated(brujula, Null, DestRect, angulo)
Label1.Text=angulo
Activity.Invalidate
End Sub
Sub Button2_Click
angulo = angulo + paso
Canvas1.DrawBitmapRotated(brujula, Null, DestRect, angulo)
Label1.Text=angulo
Activity.Invalidate
End Sub
|
Consiste en convertir el dibujo en un bitmap (mapa de bits): brujula.Initialize(File.DirAssets,"brujula.gif")
Crear un rectángulo: DestRect.Initialize(x, y, x+brujula.Width, y+brujula.Height)
Introducir el dibujo en el rectángulo: Canvas1.DrawBitmapRotated(brujula, Null, DestRect, angulo)
Girar el rectángulo con el dibujo dentro: Canvas1.DrawBitmapRotated(brujula, Null, DestRect, angulo)
Para ver como gira, establece el color de Activity en negro: Activity.Color=Colors.Black
________________________________________
Puedes poner un Timer y que automáticametente gire el dibujo 6 grados cada segundo.
Para ello insertamos en Sub Activity_Create(FirstTime As Boolean)
Dim Timer1 As Timer
Timer1.Initialize("Timer1",200)
Timer1.Enabled = True ' False para deshabilitar el reloj
Timer1_Tick
y luego añadimos esta Subrutina:
Sub Timer1_Tick
angulo =(angulo + paso)
Canvas1.DrawBitmapRotated(brujula, Null, DestRect, angulo)
Label1.Text=angulo
Activity.Invalidate
End Sub
________________________________
|