Red de conocimiento informático - Material del sitio web - En VB, ¿cuál es el código para hacer un reloj analógico? Preferiblemente con comentarios.

En VB, ¿cuál es el código para hacer un reloj analógico? Preferiblemente con comentarios.

'Agregue un control Temporizador al formulario y establezca el Intervalo en menos de 1000.

'/////////////////////////////////

Opción Explícita Const PI = 3,1415926

Atenuar BaseX como entero, BaseY como entero, R como entero

Atenuar r1 como entero, r2 como entero, r3 como enteroPrivate Sub Form_Load()

Me.ScaleMode = 3

Me.AutoRedraw = True

Si Me.Width lt; ; 3000 Entonces Me.Height = 3000

Fin SubPrivate Sub Init()

Atenuar i como entero BaseX = Me.ScaleWidth / 2

BaseY = Me. Altura de escala / 2

R = IIf(BaseX gt; BaseY, BaseY * 0.8, BaseY * 0.8)

r1 = R * 0.2

r2 = R * 0.1

r3 = R * 0.05 Para i = 0 a 360 Paso 6

Si i Mod 30 = 0 Entonces 'Cuando

Me.DrawWidth = 2

DrawLine BaseX (R - 3) * Sin(i * PI / 180), BaseY - (R - 3) * Cos(i * PI / 180), BaseX (R - 8) * Sin(i * PI / 180), BaseY - (R - 8) * Cos(i * PI / 180), 3

Else 'Min

Me.DrawWidth = 2

Me.PSet (BaseX (R - 3) * Sin(i * PI / 180), BaseY - (R - 3) * Cos(i * PI / 180))

Fin Si

Siguiente

Me.DrawWidth = 1

Me.Circle (BaseX, BaseY), R

End Sub'draw pointer p>

Private Sub DrawClock()

Atenuar el segundo como entero

Atenuar el minuto como entero

Atenuar las horas como entero Segundo = DatePart(" s", Hora)

Minuto = FechaParte("n", Hora)

<

p> Horas = DatePart("h", Hora)

Si Horas gt 12 Entonces

Horas = Horas - 12

Fin Si Me.DrawWidth = 1

Me.Circle (BaseX, BaseY), 4 DrawLine BaseX - r1 * Sin (Segundo * PI / 30), BaseY r1 * Cos (Segundo * PI / 30), BaseX (R - 10) * Sin(Segundo * PI / 30), BaseY - (R - 10) * Cos(Segundo * PI / 30), 0

DrawLine BaseX - r2 * Sin(Minuto * PI / 30), BaseY r2 * Cos(Minuto * PI / 30), BaseX R * 0,8 * Sin(Minuto * PI / 30), BaseY - R * 0,8 * Cos(Minuto * PI / 30), 1

DrawLine BaseX - r3 * Sin((Horas Minuto / 60) * PI / 6), BaseY r3 * Cos((Horas Minuto / 60) * PI / 6), BaseX R * 0.6 * Sin((Horas Minuto / 60) * PI / 6), BaseY - R * 0.6 * Cos((Horas Minuto / 60) * PI / 6), 2

Función de dibujo de sublínea final

Sub DrawLine privada (x1 como Entero, y1 como entero, x2 como entero, y2 como entero, bandera como entero)

Estático OldSX1 como entero, OldSX2 como entero, OldSY1 como entero, OldSY2 como entero

Estático OldMX1 Como entero, OldMX2 como entero, OldMY1 como entero, OldMY2 como entero

Estático OldHX1 como entero, OldHX2 como entero, OldHY1 como entero, OldHY2 como entero

Seleccionar indicador de caso

Caso 0

Me.DrawWidth = 1

Me.Line (OldSX1, OldSY1)-(OldSX2, OldSY2), Me.BackColor

Me.Line (x1, y1)-(x2, y2)

AntiguoSX1 = x1

AntiguoSX2 = x2

OldSY1 = y1

OldSY2 = y2

Caso 1

Me.DrawWidth = 2

Me.Line (OldMX1, OldMY1)-(OldMX2, OldMY2), Me.BackColor

Me.Line (x1, y1)-(x2, y2)

OldMX1 = x1

OldMX2 = x2

OldMY1 = y1

OldMY2 = y2

Caso 2

Me.DrawWidth = 3

Me.Line (OldHX1, OldHY1)-(OldHX2, OldHY2), Me.BackColor

Me.Line (x1, y1)-(x2, y2)

OldHX1 = x1

OldHX2 = x2

OldHY1 = y1

OldHY2 = y2

Caso más

Me.Line ( x1, y1)-(x2, y2)

Finalizar selección

Finalizar SubPrivate Sub Form_Resize()

Me.Cls

Llamar Init

End SubPrivate Sub Timer1_Timer()

Llamar a DrawClock

End Sub

Lo comenté un poco, pero creo que es Demasiado simple y no es necesario comentarlo. Antes de decir esto, lo escribí cuando estaba aburrido. Si realmente no lo entiendes, simplemente presiona F8 y léelo lentamente.