Hola, quiero hacer una simulación de un voltimetro y amperimetro, conseguí que funcione bien cargando y rotando el cuadro del voltímetro que consta de una imagen circular y una imagen con una varilla que va rotando sobre el círculo (como si se tratara de un contador de velocidad de un coche).
El problema viene al cargar otro para de imágenes, una hace de fondo circular(la que marca los amperios), la otra imagen es la varilla que simula la rotación sobre el circulo para señalar los amperios.
Llevo ya varios días intentado darle solución haciendo cambios y buscando por internet pero hasta el momento no lo conseguí.
No se si existe otra forma de hacer lo que quiero.
Al cargar la segunda imagen compuesta del circulo y varilla del amperitro, cuando le doy al boton para que gire no rota la varilla del voltimetro (solo esta escrito el codigo para la varilla del voltimetro, si escribo el codigo para la varilla del amperimetro me da error y no se ejecuta el programa)
El problema viene al cargar otro para de imágenes, una hace de fondo circular(la que marca los amperios), la otra imagen es la varilla que simula la rotación sobre el circulo para señalar los amperios.
Llevo ya varios días intentado darle solución haciendo cambios y buscando por internet pero hasta el momento no lo conseguí.
No se si existe otra forma de hacer lo que quiero.
Al cargar la segunda imagen compuesta del circulo y varilla del amperitro, cuando le doy al boton para que gire no rota la varilla del voltimetro (solo esta escrito el codigo para la varilla del voltimetro, si escribo el codigo para la varilla del amperimetro me da error y no se ejecuta el programa)
B4X:
Sub Process_Globals
Dim temporizador1 As Timer
End Sub
Sub Globals
Dim fondocanvas As Canvas
Dim reloj1, aguja1 As Bitmap
Dim srectfondocanvas, drectcanvas, srectaguja1, drectaguja1 As Rect
Dim centrox As Int : centrox=100
Dim centroy As Int : centroy=600
Dim angulopaso As Float : angulopaso=6
Dim angulo As Float :angulo=-angulopaso
Dim modo As Boolean :modo=True
'''''''''''''''''''''''''''''''''''''''''''
Dim fondocanvasb As Canvas
Dim reloj1b, aguja1b As Bitmap
Dim srectfondocanvasb, drectcanvasb, srectaguja1b, drectaguja1b As Rect
Dim centroxb As Int : centroxb=400
Dim centroyb As Int : centroyb=600
Dim angulopasob As Float : angulopasob=6
Dim angulob As Float :angulob=-angulopasob
Dim modob As Boolean :modob=True
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Layout4")
Dim x, y As Int
reloj1.Initialize(File.DirAssets,"voltimetro.png")
aguja1.Initialize(File.DirAssets,"varillavoltimetro.png")
srectaguja1.Initialize(0,0,aguja1.Width,aguja1.Height)
x=centrox-aguja1.Width/2
y=centroy-aguja1.Height/2
drectaguja1.Initialize(x,y,x+aguja1.Width,y+aguja1.Height)
srectfondocanvas.Initialize(0,0,reloj1.Width,reloj1.Height)
x=centrox-reloj1.Width/2
y=centroy-reloj1.Height/2
drectcanvas.Initialize(x,y,x+reloj1.Width,y+reloj1.Height)
fondocanvas.Initialize(Activity)
temporizador1.Initialize("temporizador1",50)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''posicion inicial de la aguja del voltimetro
angulo=195
fondocanvas.DrawBitmap(reloj1,srectfondocanvas,drectcanvas)
fondocanvas.DrawBitmapRotated(aguja1,srectaguja1,drectaguja1,angulo)
Activity.Invalidate
temporizador1_tick
'Segundo reloj
Dim xb, yb As Int
reloj1b.Initialize(File.DirAssets,"amperimetro.png")
aguja1b.Initialize(File.DirAssets,"varillavoltimetro.png")
srectaguja1b.Initialize(0,0,aguja1b.Width,aguja1b.Height)
xb=centroxb-aguja1b.Width/2
yb=centroyb-aguja1b.Height/2
drectaguja1b.Initialize(xb,yb,xb+aguja1b.Width,yb+aguja1b.Height)
srectfondocanvasb.Initialize(0,0,reloj1b.Width,reloj1b.Height)
xb=centroxb-reloj1b.Width/2
yb=centroyb-reloj1b.Height/2
drectcanvasb.Initialize(xb,yb,xb+reloj1b.Width,yb+reloj1b.Height)
fondocanvasb.Initialize(Activity)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''posicion inicial de la aguja del amperimetro
angulob=195
fondocanvasb.DrawBitmap(reloj1b,srectfondocanvasb,drectcanvasb)
fondocanvasb.DrawBitmapRotated(aguja1b,srectaguja1b,drectaguja1b,angulob)
Activity.Invalidate
'''''''''''''''''''''''''''''''''''''
End Sub
Sub temporizador1_tick
If angulo=483 Then
Else
angulo=(angulo+angulopaso) 'Mod 360
If modo=True Then
fondocanvas.DrawBitmap(reloj1,srectfondocanvas,drectcanvas)
fondocanvas.DrawBitmapRotated(aguja1,srectaguja1,drectaguja1,angulo)
Else
fondocanvas.DrawBitmapRotated(reloj1,srectfondocanvas,drectcanvas,-angulo)
fondocanvas.DrawBitmap(aguja1,srectaguja1,drectaguja1)
End If
End If
Activity.Invalidate
End Sub
Sub btnempezar_Click
If temporizador1.Enabled=True Then
temporizador1.Enabled=False
btnempezar.Text="gira"
Else
temporizador1.Enabled=True
btnempezar.TExt="para"
End If
End Sub
Last edited: