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

Analog Clock in WPF

, 17 Sep 2008 CPOL
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

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

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 | Terms of Use | Mobile
Web02 | 2.8.141220.1 | Last Updated 17 Sep 2008
Article Copyright 2008 by Mohammad Dayyan
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid