C#实现钟表案例

钟表案例

C#实现钟表案例_第1张图片

window中的代码


        // WindowStyle="None" 无边框
        // WindowStartupLocation="CenterScreen"  设置窗口居中显示
    
    //数字1-12
    		//数字1
        
            //数字2
        
            //数字3
        
            //数字4
        
            //数字5
        
            //数字6
        
            //数字7
        
            //数字8
        
            //数字9
        
            //数字10
        
        
            //数字11
        
        
            //数字12
        
        
            
        

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        //获取当前时间的秒数
        int NowS = DateTime.Now.Second;
        //获取当前时间的分钟
        int NowM = DateTime.Now.Minute;
        //获取当前时间的小时
        int NowH = DateTime.Now.Hour;
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //边框
            Border br = new Border();
            br.Width = br.Height = 300;
            br.BorderThickness = new Thickness(10);
            br.BorderBrush = Brushes.Black;
            br.CornerRadius = new CornerRadius(150);
            Canvas.SetLeft(br,100);
            Canvas.SetTop(br,100);
            BG.Children.Add(br);
            
            //秒针
            Image S = new Image();
            S.Width = 25;
            S.Height = 140;
            S.Source = new BitmapImage(new Uri("img/S.png", UriKind.Relative));
            S.Stretch = Stretch.Fill;
            BG.Children.Add(S);
            //ps:因为时分秒三张图片不规范,所以位置有了些许的调整
            Canvas.SetLeft(S, Canvas.GetLeft(br) + br.Width / 2 - S.Width / 2-1);
            Canvas.SetTop(S, Canvas.GetTop(br) + (br.Height / 2) + 36 - S.Height);
			
			//秒针的旋转动画
            RotateTransform Srotate = new RotateTransform();
            S.RenderTransform = Srotate;
            //设置旋转中心,百分比值
            S.RenderTransformOrigin = new Point(0.5, 0.75);
            Storyboard storyS = new Storyboard();
            
            DoubleAnimation Sdh = new DoubleAnimation(NowS*6, NowS * 6+360, new Duration(TimeSpan.FromSeconds(60)));
            Sdh.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTarget(Sdh, S);
            Storyboard.SetTargetProperty(Sdh, new PropertyPath("RenderTransform.Angle"));
            storyS.Children.Add(Sdh);
            storyS.Begin();

            //分针
            Image M = new Image();
            M.Width = 25;
            M.Height = 120;
            M.Source = new BitmapImage(new Uri("img/M.png", UriKind.Relative));
            M.Stretch = Stretch.Fill;
            BG.Children.Add(M);
            Canvas.SetLeft(M, Canvas.GetLeft(br) + br.Width / 2 - M.Width / 2-1);
            Canvas.SetTop(M, Canvas.GetTop(br) + (br.Height / 2) + 16 - M.Height);

			//分针的旋转动画
            RotateTransform Mrotate = new RotateTransform();
            M.RenderTransform = Mrotate;
            //设置旋转中心,百分比值
            M.RenderTransformOrigin = new Point(0.5, 0.85);
            Storyboard storyM = new Storyboard();
            
            DoubleAnimation Mdh = new DoubleAnimation(NowM*6, NowM*6+360, new Duration(TimeSpan.FromMinutes(60)));
            Mdh.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTarget(Mdh, M);
            Storyboard.SetTargetProperty(Mdh, new PropertyPath("RenderTransform.Angle"));
            storyM.Children.Add(Mdh);
            storyM.Begin();

            //时针
            Image H = new Image();
            H.Width = 25;
            H.Height = 60;
            H.Source = new BitmapImage(new Uri("img/H.png", UriKind.Relative));
            H.Stretch = Stretch.Fill;
            BG.Children.Add(H);
            Canvas.SetLeft(H, Canvas.GetLeft(br) + br.Width / 2 - H.Width / 2);
            Canvas.SetTop(H, Canvas.GetTop(br) + (br.Height / 2) + 10 - H.Height);

			//时针的旋转动画
            RotateTransform Hrotate = new RotateTransform();
            H.RenderTransform = Hrotate;
            //设置旋转中心,百分比值
            H.RenderTransformOrigin = new Point(0.5, 0.85);
            Storyboard storyH = new Storyboard();
           
            DoubleAnimation MdH = new DoubleAnimation(NowH * 30+NowM*0.5, NowH * 30 + NowM * 0.5+360, new Duration(TimeSpan.FromHours(12)));
            MdH.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTarget(MdH, H);
            Storyboard.SetTargetProperty(MdH, new PropertyPath("RenderTransform.Angle"));
            storyH.Children.Add(MdH);
            storyH.Begin();

            //小点
            Border br02 = new Border();
            br02.Width = br02.Height = 10;
            br02.Background = Brushes.Black;
            br02.CornerRadius = new CornerRadius(5);
            Canvas.SetLeft(br02, 245);
            Canvas.SetTop(br02, 245);
            BG.Children.Add(br02);
            
			//创建一个timer
            DispatcherTimer timer = new DispatcherTimer();
            //1000ms=1s
            timer.Interval = TimeSpan.FromMilliseconds(1000);
            timer.Tick += Timer_Tick;
            //获取当前时间
            Time.Content ="当前时间为:"+ DateTime.Now;
            timer.Start();
        }

        private void Timer_Tick(object sender, EventArgs e)
        {
            Time.Content = "当前时间为:" + DateTime.Now;
        }
    }

2019年1月8日21:30:21

你可能感兴趣的:(C#实现钟表案例)