|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

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

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información