domingo, 1 de septiembre de 2013

Velocímetro Gaugemeter con Visual Basic 6

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