Стрелочные часы на VB. Нужно улучшить работающую программу

Узнай цену своей работы

Формулировка задачи:

Добрый день, помогите пожалуйста улучшить программу. Всё работает, показывает реальное время, но проблема в том что есть Cls и каждую секунду форма полностью очищается и чертятся заново все линии и окружности. Мне нужно чтобы очищались только линии (стрелки часов), например каждую секунду старая стрелка очищалась и новая рисовалась, так само с минутными и часовыми стрелками. Преподаватель говорит что это делается через исключающее или но я пока не знаю как. Буду рад любому совету, заранее спасибо. Ниже приведён мой код

Решение задачи: «Стрелочные часы на VB. Нужно улучшить работающую программу»

textual
Листинг программы
Option Explicit
Dim x As Integer, y As Integer  'точки центра часов
Dim rad_b As Integer, rad_m As Integer, rad_ch As Integer, rad_s As Integer
Dim vr As String
Dim chas As Integer, min As Integer, sek As Integer, a As Integer, x1_a As Integer, y1_a As Integer, x2_a As Integer, y2_a As Integer
Dim x_m As Integer, y_m As Integer, x_ch As Integer, y_ch As Integer, x_s As Integer, y_s As Integer
Const PI As Single = 3.1415926
 
Private Sub Form_Load()
    Me.AutoRedraw = True
    x = Width / 2: y = (Height / 2) - 300
    rad_b = y - 50
    DrawWidth = 5 'толщина линий
    Circle (x, y), rad_b, vbBlue
    a = 1
   'прорисовка точечек
    For a = 0 To 11
        x1_a = x + rad_b * Cos(a * PI / 6 - PI / 2)
        y1_a = y + rad_b * Sin(a * PI / 6 - PI / 2)
        x2_a = x + (rad_b - 100) * Cos(a * PI / 6 - PI / 2)
        y2_a = y + (rad_b - 100) * Sin(a * PI / 6 - PI / 2)
        Line (x1_a, y1_a)-(x2_a, y2_a)
    Next a
End Sub
 
Private Sub Timer1_Timer()
'Cls
vr = Time
Text1.Text = Time
 
'Выдергиваем из строки время
chas = Mid(vr, 1, 2)
min = Mid(vr, 4, 2)
sek = Mid(vr, 7, 2)
a = 1
 
 
'длина линий
rad_m = rad_b - 350
rad_ch = rad_b - 650
rad_s = rad_b - 200
 
'стираем старые
If x_m <> 0 Then
DrawWidth = 4
Line (x, y)-(x_m, y_m), Me.BackColor 'минутная
Line (x, y)-(x_ch, y_ch), Me.BackColor 'часовая
DrawWidth = 2
Line (x, y)-(x_s, y_s), Me.BackColor 'секундная
End If
'задание координат линиям
x_m = x + rad_m * Cos(min * PI / 30 - PI / 2)
y_m = y + rad_m * Sin(min * PI / 30 - PI / 2)
x_ch = x + rad_ch * Cos(chas * PI / 6 - 1.3)
y_ch = y + rad_ch * Sin(chas * PI / 6 - 1.3)
x_s = x + rad_s * Cos(sek * PI / 30 - PI / 2)
y_s = y + rad_s * Sin(sek * PI / 30 - PI / 2)
'прорисовка линий
DrawWidth = 4
Line (x, y)-(x_m, y_m) 'минутная
Line (x, y)-(x_ch, y_ch) 'часовая
DrawWidth = 2
Line (x, y)-(x_s, y_s) 'секундная
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы