Introduction
This article presents a digital clock written using C# .Net 3.5 and Windows Presentation Foundation (WPF), with a version supporting styling using the RibbonStyleHandler
from the Ribbon Control Library (and hence allowing styling consistent with RibbonWindow
applications).
Using the Code
This is VERY simple, to create a new clock window, make a new instance of DigitalClockWindow
! To add a control to an existing window, use DigitalClockControl
.
About the Code
The DigitalClock
class is comprised of DigitalClockDots
and DigitalClockElement
. The DigitalClockDots
class is a UIElement
representing two dots to separate hours from minutes from seconds. DigitalClockElement
represents the following states: 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. Hence the DigitalClock
is a Grid
of DigitalClockElement DigitalClockElement DigitalClockDots DigitalClockElement DigitalClockElement DigitalClockDots DigitalClockElement DigitalClockElement
.
The DigitalClockControl
and DigitalClockWindow
classes contain a thread for updating the clock when AutoUpdate
is set to true, otherwise the clock may be updated via the .CurrentTime
property of DigitalClockControl
.
DigitalClockControl
contains three properties for styling, DigitBrush
the Brush
used to render the digits (0 to 9), DotBrush
the Brush
used to render the separating dots, and ClockBackground
the background of the clock. DigitalClockDots
contains a single property RenderBrush
for setting the brush used to render the dots. DigitalClockElement
contains a similar property RenderBrush
for setting the brush used to render the graphic components. Furthermore it also contains a Value property for setting the value to display (in the range 0 to 9).
Ribbon Styled Clock
In version 1.0.0.1 RibbonClockControl
and RibbonClockWindow
have been added which inherit from DigitalClockControl
and DigitalControlWindow
respectively; they add automatic styling based on the RibbonStyleChanged
event, and can be seen in use in the CIRIP project (a Computational Intelligent Railway Intervention Planner).
References
ribboncontrol.aspx - The Ribbon Control library used in styling the control.
History
Version 1.0.0.0
- Initial build
Version 1.0.0.1
- Separated Ribbon styling from clock.
Version 1.0.0.1
- Added AutoUpdate
and CurrentTime
properties to allow display of custom times
Version 1.0.0.1
- Added RibbonClockControl
and Window
with Ribbon styling
Version 1.0.0.1
- Refactored controls to allow resizing
Version 1.0.0.1
- Changed clock from Window
to UserControl
and added DigitalClockWindow
Version 1.0.0.1
- Fixed bug where update thread kept process alive