制作WPF时钟之2

前段时间写了一篇“制作简单的WPF时钟”,今天再制作了一个更漂亮的WPF时钟,目前仅完成了设计部分,准备将它制作成一个无边框窗体式的时钟。

效果图:
漂亮的WPF时钟  

前次采用的是从Control控件继承,就是:public class Clock : Control,然后在Window中加入:<customControl:Clock... />标签的方式。

这次准备采用另一种方式,就是:Storyboard,这是因为Storyboard也有定时完成某些指定动作的功能。
比如:
  <Storyboard x:Key="clockHandStoryboard">
   <ParallelTimeline>
    <DoubleAnimation  Storyboard.TargetName="secondHandAngle" From="-8" To="352" Duration="00:01:00" RepeatBehavior="Forever" Storyboard.TargetProperty="Angle"/>
    <DoubleAnimation Storyboard.TargetName="hourHandAngle" From="-8" To="352" Duration="12:00:00" RepeatBehavior="Forever" Storyboard.TargetProperty="Angle" />
    <DoubleAnimation Storyboard.TargetName="minuteHandAnimation" From="-8" To="352" Duration="01:00:00" RepeatBehavior="Forever" 
        Storyboard.TargetProperty="Angle"
/>
   </ParallelTimeline>
  </Storyboard>

为了使窗体透明,无边框,还需要设置相关属性,如:AllowsTransparency="true"  Background="Transparent"   WindowStyle="None"等。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
下面是一个简单的 C# WPF 时钟的示例代码: XAML 部分: ```xml <Window x:Class="WpfClock.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF Clock" Height="200" Width="200"> <Grid> <Ellipse Width="100" Height="100" Fill="White"/> <Canvas Margin="50"> <Line X1="50" Y1="50" X2="50" Y2="10" Stroke="Black" StrokeThickness="2"/> <Line X1="50" Y1="50" X2="90" Y2="50" Stroke="Black" StrokeThickness="2"/> <Line X1="50" Y1="50" X2="45" Y2="85" Stroke="Black" StrokeThickness="2"/> <Line X1="50" Y1="50" X2="55" Y2="85" Stroke="Black" StrokeThickness="2"/> <Line X1="50" Y1="50" X2="10" Y2="50" Stroke="Red" StrokeThickness="1"/> <Line X1="50" Y1="50" X2="50" Y2="90" Stroke="Red" StrokeThickness="1"/> </Canvas> <TextBlock x:Name="txtTime" Margin="70,100,0,0" FontSize="20"/> </Grid> </Window> ``` C# 部分: ```cs using System; using System.Windows; using System.Windows.Threading; namespace WpfClock { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += Timer_Tick; timer.Start(); } private void Timer_Tick(object sender, EventArgs e) { txtTime.Text = DateTime.Now.ToString("hh:mm:ss tt"); } } } ``` 这个时钟使用了一个 `Ellipse` 控件来表示时钟的外形,使用 `Canvas` 控件来添加时钟的刻度和指针,使用 `TextBlock` 控件来显示当前时间。`DispatcherTimer` 用于每秒更新一次当前时间。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值