Muy buenas a todos y todas!!!
Después de mucho buscar un velocímetro sencillo, he dado con un ejemplo el cual sirve perfectamente para la mejora que quiero hacer en el software de la maqueta.
Se trata de un sencillo programa donde dibujamos una linea (Line1) sobre una imagen (Picture1).
También dibuja unos puntos en arco en la imagen como un velocímetro.
Es lo más sencillo que he podido encontrar y modificar, sin necesidad de ningún OCX.
Espero que os sea de utilidad
Archivo: velocímetro.frm
VERSION 5.00
Begin VB.Form Form1
BorderStyle = 1 'Fixed Single
Caption = "Form1"
ClientHeight = 2070
ClientLeft = 45
ClientTop = 375
ClientWidth = 3555
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 2070
ScaleWidth = 3555
StartUpPosition = 3 'Windows Default
Begin VB.Timer Timer1
Left = 720
Top = 3360
End
Begin VB.PictureBox Picture1
Appearance = 0 'Flat
BackColor = &H80000005&
ForeColor = &H80000008&
Height = 1095
Left = 600
ScaleHeight = 1065
ScaleWidth = 2265
TabIndex = 1
Top = 240
Width = 2295
Begin VB.Line Line1
X1 = 600
X2 = 1560
Y1 = 480
Y2 = 1200
End
End
Begin MSComctlLib.Slider Slider1
Height = 615
Left = 360
TabIndex = 0
Top = 1440
Width = 2895
_ExtentX = 5106
_ExtentY = 1085
_Version = 393216
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim ejeX As Integer, ejeY As Integer
Dim D_Conv As Double
Dim mI As Integer
Dim blnStart As Boolean
Private Sub Form_Load()
Dim I As Integer
Form1.Caption = "Velocimetro Infotronikblog"
D_Conv = (Atn(1) * 4) / 180 'Pi 3.141593....
Slider1.Max = 180 'valor máximo de
Slider1.TickFrequency = 10
Picture1.Width = 2340
Picture1.Height = 1170 'Creamos un rectangulo
ejeX = Picture1.ScaleWidth / 2 'Calculamos el centro del eje X
ejeY = Picture1.ScaleHeight / 1 - 50 'Calculamos la parte inferior del eje Y, y lo subimos 50
Line1.X1 = ejeX
Line1.Y1 = ejeY 'centramos la linea en los ejes X Y
Line1.BorderWidth = 3 'Ancho de la Linea
Line1.BorderColor = vbBlack 'Pintamos el Line1 de color negro
Line1.X2 = ejeX + Sin(-90 * D_Conv) * 800 'Establece el punto final de X en el Line1
Line1.Y2 = ejeY - Cos(-90 * D_Conv) * 800 'Establece el punto final de Y en el Line1
Picture1.AutoRedraw = True 'Ponemos la propiedad autoredraw del picture1 en verdadero
For I = -90 To 90 Step 4 'El "FOR" dibuja los puntos, el tamaño y el color
Picture1.DrawWidth = IIf(I Mod 5 = 0, 5, 2) 'Crea los puntos del velocimetro
Picture1.ForeColor = IIf(I Mod 5 = 0, vbGreen, vbBlack) 'Cambia los colores de los puntos del velocimetro
Picture1.PSet (ejeX + Sin(I * D_Conv) * 1000, ejeY - Cos(I * D_Conv) * 1000) 'Dibuja los puntos del velocimetro
Next
End Sub
Private Sub Slider1_Click()
If Slider1.Value > 0 Then 'Si el valor del slider es mayor de 0 enciende el timer1
Timer1.Interval = 10
Timer1.Enabled = True
Else
Timer1.Enabled = False 'Si es False, lo apaga.
End If
End Sub
Private Sub Timer1_Timer()
mI = Slider1.Value - 90
Line1.X2 = ejeX + Sin(mI * D_Conv) * 800 '800 es el largo del Line1 en el eje X
Line1.Y2 = ejeY - Cos(mI * D_Conv) * 800 '800 es el largo del Line1 en el eje Y
End Sub
Otros artículos sobre Visual Basic 6.0 qu te pueden interesar:
Un saludo!!!
No hay comentarios :
Publicar un comentario