Click here to Skip to main content
Click here to Skip to main content

Analog Clock in WPF

, 17 Sep 2008
Rate this:
Please Sign up or sign in to vote.
A simple analog clock in WPF
Analog clock in WPF

Introduction

This is an analog clock in WPF.

Using the Code

My XAML code is as follows:

<Window x:Class="clock.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Clock" Margin="2" Height="327" Width="311" AllowsTransparency="True" 
        WindowStyle="None" Background="Transparent" WindowStartupLocation="CenterScreen" 
        Icon="images/clock.ico" 
        ResizeMode="NoResize" Topmost="False" Opacity="1">
    <Grid Width="300" Height="300" MouseLeftButtonDown="Grid_MouseDown">
       <Image Source="images/backGround.png"></Image>

        <Label Name="christianityCalendar" Foreground="White" 
        Margin="0, 0, 0, 52" HorizontalAlignment="Center" 
        VerticalAlignment="Bottom" Height="Auto"
         Width="Auto">Value
        </Label>
        <Label Name="persianCalendar" Foreground="White" 
        Margin="0, 0, 0, 75" HorizontalAlignment="Center" 
        VerticalAlignment="Bottom" Height="Auto" 
        Width="Auto">Value
        </Label>
        
        <!--<span class="code-comment"> Second  --></span>
        <Rectangle Margin="150,0,149,150" Name="rectangleSecond" 
        Stroke="White" Height="120" VerticalAlignment="Bottom">
            <Rectangle.RenderTransform>
                <RotateTransform x:Name="secondHand" CenterX="0" 
                CenterY="120" Angle="0" />
            </Rectangle.RenderTransform>
        </Rectangle>
        <!---->
        
        <!--<span class="code-comment"> Minute  --></span>
        <Rectangle Margin="150,49,149,151" Name="rectangleMinute" 
        Stroke="LightGreen">
            <Rectangle.RenderTransform>
                <RotateTransform x:Name="minuteHand" CenterX="0" 
                CenterY="100" Angle="0" />
            </Rectangle.RenderTransform>
        </Rectangle>
        <!---->
        
        <!--<span class="code-comment"> Hour  --></span>
        <Rectangle Margin="150,80,149,150" Name="rectangleHour" 
        Stroke="LightYellow">
            <Rectangle.RenderTransform>
                <RotateTransform x:Name="hourHand" CenterX="0" 
                CenterY="70" Angle="0" />
            </Rectangle.RenderTransform>
        </Rectangle>
        <!---->
        
    </Grid>
</Window>

My C# code is as follows:

System.Timers.Timer timer = new System.Timers.Timer(1000);
public Window1()
{
    InitializeComponent();

    MDCalendar mdCalendar = new MDCalendar();
    DateTime date = DateTime.Now;
    TimeZone time = TimeZone.CurrentTimeZone;
    TimeSpan difference = time.GetUtcOffset(date);
    uint currentTime = mdCalendar.Time() + (uint)difference.TotalSeconds;
    persianCalendar.Content = mdCalendar.Date("Y/m/D  W", currentTime, true);
    christianityCalendar.Content = mdCalendar.Date("P Z/e/d", currentTime, false);

    timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
    timer.Enabled = true;
}

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
    {
        secondHand.Angle = DateTime.Now.Second * 6;
        minuteHand.Angle = DateTime.Now.Minute * 6;
        hourHand.Angle = (DateTime.Now.Hour * 30) + (DateTime.Now.Minute * 0.5);
    }));
}

private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
{
    this.DragMove();
}

History

  • 17th September, 2008: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Mohammad Dayyan

Iran (Islamic Republic Of) Iran (Islamic Republic Of)
No Biography provided

Comments and Discussions

 
Questionvery good Pinmembervahidsing0083-May-14 0:43 
QuestionGood Job Man PinpremiumAYDIN EBRAHIMI HOMAY21-Mar-14 3:32 
SuggestionAdded code PinmemberAster Veigas9-Aug-13 10:36 
Questionwhy use a System.Timers.Timer? Pinmembertomtom198022-May-12 8:06 
GeneralMy vote of 5 PinmemberJavad Amiry7-Dec-11 4:50 
GeneralMy vote of 5 PinmemberShahin Khorshidnia24-Jul-11 1:17 
QuestionResizable? PinmemberMember 77725341-Apr-11 0:00 
AnswerRe: Resizable? PinmemberLatious19-Dec-12 10:24 
GeneralMy vote of 3 PinmemberJyothikarthk23-Dec-10 18:45 
GeneralMy vote of 5 Pinmembermasoudxxx200213-Dec-10 19:57 
GeneralMy vote of 1 Pinmembercpaynesai17-Oct-10 17:57 
GeneralMy vote of 3 PinmemberNNTBIZ25-Aug-10 12:46 
Generalso beautiful! Pinmemberwanglinfu4-Jan-10 2:55 
GeneralEY val baba Pinmembersyamah24-Aug-09 5:13 
GeneralRe: EY val baba PinmemberMohammad Dayyan26-Aug-09 9:16 
GeneralSuggestion PinmemberDrew McGhie23-Apr-09 12:22 
Questionanti-alias? PinmemberUnruled Boy23-Sep-08 16:52 
GeneralKhaylee Mamnoon PinmemberJamal Alqabandi23-Sep-08 0:10 
GeneralRe: Khaylee Mamnoon PinmemberMohammad Dayyan23-Sep-08 1:12 
GeneralGood but could be better ;) PinmemberSiavash Mortazavi22-Sep-08 9:14 
GeneralRe: Good but could be better ;) PinmemberMohammad Dayyan22-Sep-08 9:39 
Generalvery god Pinmemberhassan_kahrizy20-Sep-08 10:59 
GeneralRe: very good PinmemberMohammad Dayyan20-Sep-08 11:42 
GeneralReally Wonderful Pinmembervkuttyp20-Sep-08 6:41 
GeneralRe: Really Wonderful PinmemberMohammad Dayyan21-Sep-08 12:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140827.1 | Last Updated 17 Sep 2008
Article Copyright 2008 by Mohammad Dayyan
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid