效果图如下:

程序是用VS2010 beta 写的, 使用的是 VS2010 默认创建的 Silverlight 项目来编写的。
MainPage.xaml 文件
- <UserControl x:Class="ClockSilverlightApp.MainPage"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d"
- d:DesignHeight="300" d:DesignWidth="400" Loaded="UserControl_Loaded">
- <Canvas
- xmlns="http://schemas.microsoft.com/client/2007"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Width="180" Height="150"
- Background="#0030628D"
- x:Name="Page" >
- <Rectangle x:Name="Frame" Width="180" Height="150" Stroke="#FF000000" StrokeThickness="1" RadiusX="20" RadiusY="15">
- <Rectangle.Fill>
- <LinearGradientBrush EndPoint="0.5,1.1" StartPoint="0.5,-0.1">
- <GradientStop Color="#FF259888" Offset="0"/>
- <GradientStop Color="#FF259888" Offset="0.981"/>
- <GradientStop Color="#FFC87947" Offset="0.416"/>
- <GradientStop Color="#FFC87947" Offset="0.636"/>
- LinearGradientBrush>
- Rectangle.Fill>
- Rectangle>
- <Rectangle x:Name="Panel" Width="164" Height="134" Fill="#7F91B52C" Stroke="#FFA2AEBF" RadiusX="50" RadiusY="15" Canvas.Left="8" Canvas.Top="8" StrokeThickness="2"/>
- <Path x:Name="Line1" Width="163" Height="1" Fill="#FF100888" Stretch="Fill" Stroke="#FF1B510C" Canvas.Left="8" Canvas.Top="92" Data="M33.50029,83.29705 L161.89657,83.297051"/>
- <Path x:Name="Line2" Width="1" Height="49" Fill="#FF100888" Stretch="Fill" Stroke="#FF1B510C" Canvas.Left="56" Canvas.Top="92" Data="M81.450752,138.29705 L81.450752,90.29705"/>
- <Path x:Name="Line3" Width="1" Height="49" Fill="#FF100888" Stretch="Fill" Stroke="#FF1B510C" Canvas.Left="110" Canvas.Top="92" Data="M118.30501,164.29698 L118.30501,116.29699"/>
- <TextBlock x:Name="Month" Width="16" Height="19" Canvas.Left="30" Canvas.Top="92" TextWrapping="Wrap" Foreground="#FF100888" Text="月"/>
- <TextBlock Width="16" Height="19" Canvas.Left="78" Canvas.Top="92" TextWrapping="Wrap" x:Name="Day" Foreground="#FF100888" Text="日"/>
- <TextBlock Width="30" Height="19" Canvas.Left="129" Canvas.Top="92" TextWrapping="Wrap" x:Name="Week" Foreground="#FF100888" Text="星期"/>
- <TextBlock x:Name="txtMonth" Width="19" Height="19" Canvas.Left="28" Canvas.Top="111" TextWrapping="Wrap" Foreground="#FF100888" Text="12"/>
- <TextBlock x:Name="txtDay" Width="20.5" Height="19" Canvas.Left="77" Canvas.Top="111" TextWrapping="Wrap" Foreground="#FF100888" Text="31"/>
- <TextBlock x:Name="txtWeek" Width="20" Height="19" Canvas.Left="133" Canvas.Top="111" TextWrapping="Wrap" Foreground="#FF100888" Text="六"/>
- <TextBlock x:Name="txtHour" Width="48" Height="48" Canvas.Left="14.5" Canvas.Top="38" TextWrapping="Wrap" FontSize="36" Foreground="#FF100888" Text="23"/>
- <TextBlock x:Name="txtMinute" Width="48" Height="48" Canvas.Left="68.5" Canvas.Top="38" TextWrapping="Wrap" FontSize="36" Foreground="#FF100888" Text="59"/>
- <TextBlock x:Name="txtSecond" Width="49" Height="48" Canvas.Left="122" Canvas.Top="38" TextWrapping="Wrap" FontSize="36" Foreground="#FF100888" Text="59"/>
- <TextBlock x:Name="Colon1" Width="9.5" Height="27" Canvas.Left="62.5" Canvas.Top="48" TextWrapping="Wrap" Foreground="#FF100888" Text=":" FontSize="20"/>
- <TextBlock x:Name="Colon2" Width="12" Height="27" Canvas.Left="116.5" Canvas.Top="48" TextWrapping="Wrap" Foreground="#FF100888" Text=":" FontSize="20"/>
- <TextBlock x:Name="Copyright" Width="88" Height="16" Canvas.Left="16" TextWrapping="Wrap" FontSize="12" Canvas.Top="22" Foreground="#FF100888" Text="郭红俊 clock" MouseLeftButtonDown="Copyright_MouseLeftButtonDown" MouseEnter="TextBlock_MouseEnter" MouseLeave="TextBlock_MouseLeave" />
- <TextBlock x:Name="FullScreen" Width="88" Height="16" Canvas.Left="106" TextWrapping="Wrap" FontSize="12" Canvas.Top="22" Foreground="#FF100888" Text="FullScreen" MouseEnter="TextBlock_MouseEnter" MouseLeave="TextBlock_MouseLeave" MouseLeftButtonDown="FullScreen_MouseLeftButtonDown" />
- Canvas>
- UserControl>
MainPage.xaml.cs 文件
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Shapes;
- using System.Windows.Threading;
- using System.Windows.Browser;
- namespace ClockSilverlightApp
- {
- public partial class MainPage : UserControl
- {
- public MainPage()
- {
- InitializeComponent();
- dicWeek.Add(DayOfWeek.Friday, "五");
- dicWeek.Add(DayOfWeek.Monday, "一");
- dicWeek.Add(DayOfWeek.Saturday, "六");
- dicWeek.Add(DayOfWeek.Sunday, "日");
- dicWeek.Add(DayOfWeek.Thursday, "四");
- dicWeek.Add(DayOfWeek.Tuesday, "二");
- dicWeek.Add(DayOfWeek.Wednesday, "三");
- }
- private static readonly Dictionarystring> dicWeek = new Dictionarystring>();
- ///
- /// 定时更新前段显示信息事件
- ///
- ///
- ///
- private void enableClock(object sender, EventArgs e)
- {
- DateTime dt = DateTime.Now;
- this.txtMonth.Text = string.Format("{0:00}", dt.Month);
- this.txtDay.Text = string.Format("{0:00}", dt.Day);
- this.txtWeek.Text = dicWeek[dt.DayOfWeek];
- this.txtHour.Text = string.Format("{0:00}", dt.Hour);
- this.txtMinute.Text = string.Format("{0:00}", dt.Minute);
- this.txtSecond.Text = string.Format("{0:00}", dt.Second);
- }
- DispatcherTimer timer = new DispatcherTimer();
- private void UserControl_Loaded(object sender, RoutedEventArgs e)
- {
- enableClock(null, null);
- timer.Interval = new TimeSpan(0,0,1);
- timer.Tick += new EventHandler(enableClock);
- timer.Start();
- }
- private void Copyright_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- HtmlPage.Window.Navigate(new Uri("http://www.csdn.net/"), "new");
- }
- private void TextBlock_MouseEnter(object sender, MouseEventArgs e)
- {
- if (sender == null) return;
- TextBlock tb = sender as TextBlock;
- if (tb == null) return;
- // TextBlock.foreground
- tb.Foreground = new SolidColorBrush(Colors.Red);
- // TextBlock.textDecorations
- tb.TextDecorations = TextDecorations.Underline;
- tb.Cursor = Cursors.Hand;
- }
- private void TextBlock_MouseLeave(object sender, MouseEventArgs e)
- {
- if (sender == null) return;
- TextBlock tb = sender as TextBlock;
- if (tb == null) return;
- // TextBlock.foreground
- tb.Foreground = new SolidColorBrush(Color.FromArgb(255,16,8,136));
- // TextBlock.textDecorations
- tb.TextDecorations = null;
- tb.Cursor = Cursors.Arrow;
- }
- private void FullScreen_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
- }
- }
- }