Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 2
1

Циферблат аналоговых часов

10.12.2013, 23:34. Показов 4972. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста добавить в данный код циферблат часов, а то простой круг не очень выглядит.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub Form_Load()
Picture1.Scale (28, -28)-(-28, 28)
Form1.Left = Screen.Width - Form1.Width
End Sub
Private Sub Timer1_Timer()
Picture1.Cls
Picture1.Scale (28, -28)-(-28, 28)
Picture1.DrawWidth = 2
Picture1.ForeColor = &H0
Picture1.Circle (0, 0), 20
Dim b, s, h, c
b = Time
b = Format(b, "hh:mm:ss")
Text1.Text = b
DrawWidth = 3
Text1.SelStart = 0
Text1.SelLength = 2
h = (Val(Text1.SelText) - 30) * 5
Picture1.FillColor = &H0
Picture1.ForeColor = &H0
Picture1.Line (0, 0)-(13 * Sin(h * 0.10471975511966), 13 * Cos(h * 0.10471975511966))
 
Text1.SelStart = 3
Text1.SelLength = 2
c = (Val(Text1.SelText) - 30)
Picture1.Line (0, 0)-(18 * Sin(c * 0.10471975511966), 18 * Cos(c * 0.10471975511966))
Picture1.DrawWidth = 1
Text1.SelStart = 6
Text1.SelLength = 2
s = (Val(Text1.SelText) - 30)
Picture1.Line (0, 0)-(18 * Sin(s * 0.10471975511966), 18 * Cos(s * 0.10471975511966))
Text1.SelStart = 9
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2013, 23:34
Ответы с готовыми решениями:

Циферблат аналоговых часов, есть код но он работает не совсем корректно
Здравствуйте, собственно написал код для вывода циферблата часов, просто по нажатию на кнопку. Код...

циферблат часов
Добрый день! подскажите пожалуйста, каким образом можно сверстать циферблат аналоговых часов...

Нарисовать циферблат часов
дорогие программисты, помогите пожалуйста...где в коде прописать,, чтобы вместо пустых точек стояли...

Изобразить циферблат часов с движущимися стрелками
Изобразить циферблат часов с движущимися стрелками. Правила форума: 5.16. Запрещено создавать темы...

6
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
11.12.2013, 00:20 2
Ну цихерки добавь:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Timer1_Timer()
Dim i, L
Dim Pi
Pi = 4 * Atn(1)
Picture1.Cls
Picture1.Scale (28, -28)-(-28, 28)
Picture1.DrawWidth = 2
Picture1.ForeColor = &H0
Picture1.Circle (0, 0), 20
L = 15
Picture1.FontSize = 14
For i = 12 To 1 Step -1
Picture1.CurrentX = L * Cos(-i * Pi / 6 - Pi / 2)
Picture1.CurrentY = L * Sin(-i * Pi / 6 - Pi / 2)
Picture1.Print i
Next i
1
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
11.12.2013, 09:01 3
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Попробуй такой код. Это из какого-то справочника.
На форме таймер.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Const R = 60            ' радиус циферблата часов
Const GRAD = 0.0174532  ' коэффициент пересчета угла
                        ' из градусов в радианы
Const PI = 3.14159265
 
Dim x0 As Integer, y0 As Integer    ' центр циферблата
Dim ahr As Integer                  ' положение стрелок (угол)
Dim amin As Integer
Dim asec As Integer
 
' инициализация формы
Private Sub Form_Initialize()
   Form1.Height = (Form1.Height - Form1.ScaleHeight) + _
                  (R + 30) * 2 * Screen.TwipsPerPixelY
   Form1.Width = (Form1.Width - Form1.ScaleWidth) + _
                 (R + 30) * 2 * Screen.TwipsPerPixelX
 
   x0 = R + 30
   y0 = R + 30
 
   ' положение стрелок
   ahr = 90 - Hour(Time) * 30 - (Minute(Time) / 12) * 6
   amin = 90 - Minute(Time) * 6
   asec = 90 - Second(Time) * 6
 
   Timer1.Interval = 1000   ' период сигналов таймера - 1 сек
   Timer1.Enabled = True    ' запуск таймера
   Form1.ScaleMode = 3
End Sub
 
' процедура вычерчивает вектор заданной длины из точки (x0,y0)
Sub Vector(x0 As Integer, y0 As Integer, _
           a As Integer, l As Integer)
   ' x0, y0 - начало вектора
   ' a - угол между осью X и вектором
   ' l - длина вектора
   Dim x, y As Integer  ' координаты конца вектора
 
   x = Round(x0 + l * Cos(a * GRAD))
   y = Round(y0 - l * Sin(a * GRAD))
   Line (x0, y0)-(x, y)
End Sub
 
' процедура рисует стрелки
Sub DrawClock()
   ' шаг секундной и минутной стрелок 6 градусов,
   ' часовой - 30.
 
   ' стирание изображений стрелок
   Form1.DrawWidth = 3   ' задание толщины линии
   Form1.ForeColor = Form1.BackColor
   ' часовая стрелка
   Call Vector(x0, y0, ahr, R - 20)
   ' минутная стрелка
   Call Vector(x0, y0, amin, R - 15)
   ' секундная стрелка
   Call Vector(x0, y0, asec, R - 7)
 
   ' определение нового положения стрелок
   ahr = 90 - Hour(Time) * 30 - (Minute(Time) / 12) * 6
   amin = 90 - Minute(Time) * 6
   asec = 90 - Second(Time) * 6
  
   ' прорисовка стрелок на новом положении
   ' часовая стрелка
   Form1.DrawWidth = 3
   Form1.ForeColor = RGB(0, 0, 0)
   Call Vector(x0, y0, ahr, R - 20)
   ' минутная стрелка
   Form1.DrawWidth = 2
   Call Vector(x0, y0, amin, R - 15)
   ' секундная стрелка
   Form1.DrawWidth = 1
   Form1.ForeColor = RGB(200, 0, 0)
   Call Vector(x0, y0, asec, R - 7)
End Sub
 
' прорисовка циферблата и начальных стрелок
Private Sub Form_Paint()
   Dim x As Integer     ' координаты маркера
   Dim y As Integer     ' на циферблате
   Dim a As Integer     ' угол между осью X и
                        ' прямой (x0, y0) - (x, y)
   Dim h As Integer     ' метка часовой риски
 
   Form1.DrawWidth = 1
   Form1.ForeColor = RGB(0, 0, 0)
 
   a = 0    ' метки ставим от 3-х часов, против
            ' часовой стрелки
   h = 3    ' угол 0 градусов - это 3 часа
 
   ' циферблат
   While (a < 360)
      x = x0 + Round(R * Cos(a * 2 * PI / 360))
      y = x0 - Round(R * Sin(a * 2 * PI / 360))
      
      If (a Mod 30) = 0 Then
         Circle (x, y), 2
         ' вывод цифр по большему радиусу
         CurrentX = x0 + Round((R + 15) * _
                    Cos(a * 2 * PI / 360)) - 7
         CurrentY = x0 - Round((R + 15) * _
                    Sin(a * 2 * PI / 360)) - 7
         Print h
         h = h - 1
         If h = 0 Then h = 12
      Else: Circle (x, y), 1
      End If
      
      a = a + 6         ' 1 минута - 6 градусов
   Wend
   
   Call DrawClock
End Sub
 
' прорисовка текущих положений стрелок часов
Private Sub Timer1_Timer()
   Call DrawClock
End Sub
1
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
11.12.2013, 09:05 4
Я на основе этого кода вот такой скринсейвер себе сделал
Миниатюры
Циферблат аналоговых часов  
1
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 2
11.12.2013, 19:06  [ТС] 5
Спасибо вам обоим))
0
1 / 1 / 0
Регистрация: 15.09.2013
Сообщений: 15
11.12.2013, 20:50 6
rlmd23, а если совсем просто (но по-кривому), можно фоновым изображением формы вставить картинку-циферблат)
ЖБ!
1
SoftIce
11.12.2013, 20:53     Циферблат аналоговых часов
  #7

Не по теме:

А время на мобилке можно посмотреть :D

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2013, 20:53

Изобразить круглый циферблат механических часов
Нужно написать программу:Изобразить круглый циферблат механических часов. Обеспечить движение...

Эмуляция аналоговых часов
всем привет! я не могу разобраться, что и как писать дальше мне нужно написать на СИ с помощью...

Код аналоговых часов на с++
Проблема с localtime, подскажите, пожалуйста, что не так

Графика: циферблат механических часов с секундной, минутной и часовой стрелками
Составьте программу вывода на экран изображения циферблата механических часов с секундной, минутной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru