Здравствуйте! Сегодня: Вт, 1 Дек 2020, Ваш IP: 35.153.39.7 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Список форумов Kbyte.Ru - - Бета-тестирование
+ Создать новую тему Страница: 1
Тема: Часы собраны на - Pie · +x1 +  дата добавления: 03.07.2013 / 03:25
Автор темы:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Хотел собрать эту игрушку с WPF,

но не смог.
Технологии: Visual Basic .NET

+ WindowsApplication4(Ch).zip (12,39 Кб)  
Ответ # 1 # · +  +  дата добавления: 03.07.2013 / 16:45
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Скорректировал фигуру, которая работает с часами.

+ WindowsApplication4(Ch).zip (12,38 Кб)  
Ответ # 2 # · +  +  дата добавления: 04.07.2013 / 15:51
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Извините.
Еще раз скорректировал фигурку часам.

+ WindowsApplication4(Ch).zip (12,35 Кб)  
Ответ # 3 # · +x1 +  дата добавления: 04.07.2013 / 21:50
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Проблема у часового Pie(зеленый цвет).
У нас (в Канаде) определяют время суток до 12.00 -> AM,
и после -> PM.
Системная шкала разбита на 24.
Пытаюсь, но никак не могу заставить Pie разворачиваться
как аналоговые часы. С секундой и минутной проблем нет.


+ WindowsApplication4(Ch).zip (12,35 Кб)  
Ответ # 4 # · +x1 +  дата добавления: 04.07.2013 / 23:10
Автор ответа:
Shark1
Shark1
тем: 3 / ответов: 153 / благодарностей: 5 / репутация: 82
Чашка Kbyte.Ru>>
ответов: 153
создал(а) тем: 3


Организуй проверку :

Dim intHour As Integer
        Dim dataTime As Date = Microsoft.VisualBasic.DateAndTime.TimeOfDay
        Dim AmPm As String
        intHour = dataTime.Hour

        If intHour > 12 Then
            intHour -= 12
            AmPm = " PM"
            Label1.Text = AmPm
        ElseIf intHour = 0 Then
            intHour = 12
            AmPm = " AM"
            Label1.Text = AmPm
        ElseIf intHour = 12 Then
            AmPm = " PM"
            Label1.Text = AmPm
        Else
            AmPm = " AM"
            Label1.Text = AmPm
        End If

В Label1 выводим значение "AM" или "PM"

Ну и далее отталкиваясь от этого меняеш свои параметры ...

Как-то так ...
 
Ответ # 5 # · +  +  дата добавления: 05.07.2013 / 01:03
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Спасибо, Виталий
Я не имел ввиду Label.
Сама фигура Pie(часовая), к пример в 12:00 должна
заполнятся на 360/о,а она заполняется на 180.
Или в час дня должна на - 30/о,но не на - 195/o
Вот фрагмент кода:
h = Date.Now.Hour
h1 = (360/24)* h
g.FillPie(K,50,50,400,400,270,h1)
Будь здоров парень.С уважением, Akiva

 
Ответ # 6 # · +x1 +  дата добавления: 05.07.2013 / 10:32
Автор ответа:
Shark1
Shark1
тем: 3 / ответов: 153 / благодарностей: 5 / репутация: 82
Чашка Kbyte.Ru>>
ответов: 153
создал(а) тем: 3


Не привязывай градусы ко времени текущего часа, тем более что он изменяется медленно.
Лучше тупо привязать градус к реальным как указано в функции.

вот как я бы примерно делал на WPF:



Код чисто условный:

Imports System.Windows.Threading
Class MainWindow
    Dim timer As New DispatcherTimer
    Dim dataTime As Date = Now

    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        AddHandler timer.Tick, AddressOf timer_Tick
        timer.Interval = New TimeSpan(0, 0, 1)
        timer.Start()
    End Sub

    Private Sub timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
        Dim intHour As Integer
        dataTime = Now
        Dim AmPm As String
        intHour = dataTime.Hour
        If intHour > 12 Then
            intHour -= 12
            AmPm = " PM"
            Label1.Content = AmPm
        ElseIf intHour = 0 Then
            intHour = 0
            AmPm = " AM"
            Label1.Content = AmPm
        ElseIf intHour = 12 Then
            intHour = 12
            AmPm = " PM"
            Label1.Content = AmPm
        Else
            AmPm = " AM"
            Label1.Content = AmPm
        End If
        Hour.EndAngle = hourHour(intHour)
        Label2.Content = intHour
        Label5.Content = dataTime.ToLongDateString & " " & dataTime.ToLongTimeString
    End Sub

    Private Function hourHour(ByVal h As Integer) As Integer
        h = dataTime.Hour
        Select Case h
            Case 0
                Hour.EndAngle = 0
            Case 1
                Hour.EndAngle = 30
            Case 2
                Hour.EndAngle = 60
            Case 3
                Hour.EndAngle = 90
            Case 4
                Hour.EndAngle = 120
            Case 5
                Hour.EndAngle = 150
            Case 6
                Hour.EndAngle = 180
            Case 7
                Hour.EndAngle = 210
            Case 8
                Hour.EndAngle = 240
            Case 9
                Hour.EndAngle = 270
            Case 10
                Hour.EndAngle = 300
            Case 11
                Hour.EndAngle = 330
            Case 12
                Hour.EndAngle = 0
            Case 13
                Hour.EndAngle = 30
            Case 14
                Hour.EndAngle = 60
            Case 15
                Hour.EndAngle = 90
            Case 16
                Hour.EndAngle = 120
            Case 17
                Hour.EndAngle = 150
            Case 18
                Hour.EndAngle = 180
            Case 19
                Hour.EndAngle = 210
            Case 20
                Hour.EndAngle = 240
            Case 21
                Hour.EndAngle = 270
            Case 22
                Hour.EndAngle = 300
            Case 23
                Hour.EndAngle = 330
        End Select
        Return Hour.EndAngle
    End Function
End Class

XAML:

<Window
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"
	x:Class="MainWindow"
	x:Name="Window"
	Title="MainWindow"
	Width="640" Height="480">

	<Grid x:Name="LayoutRoot">
		<ed:Arc ArcThickness="1" ArcThicknessUnit="Percent" EndAngle="0" Fill="#FF00FF10" Stretch="None" StartAngle="0" Width="300" HorizontalAlignment="Left" VerticalAlignment="Top" Height="300" Margin="155,97,0,0" Name="Hour" />
        <Label Height="28" HorizontalAlignment="Left" Margin="447,50,0,0" Name="Label1" VerticalAlignment="Top" Width="52" />
        <Label Height="28" HorizontalAlignment="Left" Margin="529,50,0,0" Name="Label2" VerticalAlignment="Top" Width="67" />
        <Label Content="AmPm" Height="34" HorizontalAlignment="Left" Margin="445,0,0,0" Name="Label3" VerticalAlignment="Top" Width="54" />
        <Label Content="Hour" Height="34" HorizontalAlignment="Left" Margin="529,0,0,0" Name="Label4" VerticalAlignment="Top" Width="67" />
        <Label Height="28" HorizontalAlignment="Left" Margin="179,50,0,0" Name="Label5" VerticalAlignment="Top" Width="229" HorizontalContentAlignment="Center" />
        <Label Content="DataTime" Height="34" HorizontalAlignment="Left" Margin="252,12,0,0" Name="Label6" VerticalAlignment="Top" Width="63" />
    </Grid>
</Window>


+ WpfApplication38.zip (293,65 Кб)  
Ответ # 7 # · +  +  дата добавления: 05.07.2013 / 16:06
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Спасибо.Будем разбирать завалы.
С уважением, Akiva
 
Ответ # 8 # · +  +  дата добавления: 05.07.2013 / 21:48
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Вот мы и довели эту "игрушку" до необходимой понятности.
Технологии: Visual Basic .NET

+ WindowsApplication4(Ch).zip (12,59 Кб)  
Ответ # 9 # · +  +  дата добавления: 07.07.2013 / 05:49
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Дело было вечером,делать было нечего.
И вот я решил эту "игрушку-часы" привести их на подобие настоящих часов.
(Если предыдущие показы занимают много места и памяти - уберите их пожалуйста).
Технологии: Visual Basic .NET

+ WindowsApplication4(Ch).zip (13,91 Кб)  
Ответ # 10 # · +  +  дата добавления: 07.07.2013 / 12:12
Автор ответа:
Shark1
Shark1
тем: 3 / ответов: 153 / благодарностей: 5 / репутация: 82
Чашка Kbyte.Ru>>
ответов: 153
создал(а) тем: 3




Кружочками указаны проблемные места ...
 
Ответ # 11 # · +  +  дата добавления: 07.07.2013 / 15:38
Автор ответа:
Akiva
Akiva
тем: 95 / ответов: 158 / благодарностей: 3 / репутация: 55
ответов: 158
создал(а) тем: 95


Извини, если что не так, и спасибо.
С уважением, Akiva
Технологии: Visual Basic .NET

+ WindowsApplication4(Ch).zip (13,05 Кб)  
Ответ # 12 # · +  +  дата добавления: 07.07.2013 / 16:12
Автор ответа:
Shark1
Shark1
тем: 3 / ответов: 153 / благодарностей: 5 / репутация: 82
Чашка Kbyte.Ru>>
ответов: 153
создал(а) тем: 3


Та всё нормально ...
Удачи ...
 
Страница: 1 + Создать новую тему