最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF實(shí)現(xiàn)時(shí)鐘特效

 更新時(shí)間:2015年11月25日 09:58:40   作者:JackWang-CUMT  
這篇文章主要介紹了WPF實(shí)現(xiàn)時(shí)鐘特效,過程很簡(jiǎn)單,感興趣的小伙伴們可以參考一下

WPF在樣式定義和UI動(dòng)畫上面相對(duì)于以前的技術(shù)有了不少的提升,下面給出WPF技術(shù)實(shí)現(xiàn)鐘表的效果:

1、Visual Studio新建一個(gè)WPF應(yīng)用程序,命名為WpfClock,新建一個(gè)images文件夾,并準(zhǔn)備一個(gè)鐘表的背景圖片和程序圖標(biāo)素材。

2、編輯MainWindow.xaml文件,對(duì)UI進(jìn)行定制,代碼如下(指針都是用Rectangle實(shí)現(xiàn)的,當(dāng)然可以用圖片代替):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfClock
{
 using System.Threading;
 using System.Windows.Threading;
 /// <summary>
 /// MainWindow.xaml 的交互邏輯
 /// </summary>
 public partial class MainWindow : Window
 {
  //計(jì)時(shí)器
  System.Timers.Timer timer = new System.Timers.Timer(1000);
  public MainWindow()
  {
   InitializeComponent();
   #region 初始化時(shí)間
   secondPointer.Angle = DateTime.Now.Second * 6;
   minutePointer.Angle = DateTime.Now.Minute * 6;
   hourPointer.Angle = (DateTime.Now.Hour * 30) + (DateTime.Now.Minute * 0.5);
   this.labTime.Content = DateTime.Now.ToString("HH:mm:ss");
   #endregion
   timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
   timer.Enabled = true;
  }

  private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  {
   //進(jìn)行拖放移動(dòng)
   this.DragMove();
  }
  private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  {
   //UI異步更新
   this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
   {
    //秒針轉(zhuǎn)動(dòng),秒針繞一圈360度,共60秒,所以1秒轉(zhuǎn)動(dòng)6度
    secondPointer.Angle = DateTime.Now.Second * 6;
    //分針轉(zhuǎn)動(dòng),分針繞一圈360度,共60分,所以1分轉(zhuǎn)動(dòng)6度
    minutePointer.Angle = DateTime.Now.Minute * 6;
    //時(shí)針轉(zhuǎn)動(dòng),時(shí)針繞一圈360度,共12時(shí),所以1時(shí)轉(zhuǎn)動(dòng)30度。
    //另外同一個(gè)小時(shí)內(nèi),隨著分鐘數(shù)的變化(繞一圈60分鐘),時(shí)針也在緩慢變化(轉(zhuǎn)動(dòng)30度,30/60=0.5)
    hourPointer.Angle = (DateTime.Now.Hour * 30)+ (DateTime.Now.Minute * 0.5);
    //更新時(shí)間值
    this.labTime.Content = DateTime.Now.ToString("HH:mm:ss");
   }));
  }

 }
}

3、編輯MainWindow.xaml.CS文件,對(duì)后臺(tái)邏輯進(jìn)行定制,代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfClock
{
 using System.Threading;
 using System.Windows.Threading;
 /// <summary>
 /// MainWindow.xaml 的交互邏輯
 /// </summary>
 public partial class MainWindow : Window
 {
  //計(jì)時(shí)器
  System.Timers.Timer timer = new System.Timers.Timer(1000);
  public MainWindow()
  {
   InitializeComponent();
   #region 初始化時(shí)間
   secondPointer.Angle = DateTime.Now.Second * 6;
   minutePointer.Angle = DateTime.Now.Minute * 6;
   hourPointer.Angle = (DateTime.Now.Hour * 30) + (DateTime.Now.Minute * 0.5);
   this.labTime.Content = DateTime.Now.ToString("HH:mm:ss");
   #endregion
   timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
   timer.Enabled = true;
  }

  private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  {
   //進(jìn)行拖放移動(dòng)
   this.DragMove();
  }
  private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  {
   //UI異步更新
   this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
   {
    //秒針轉(zhuǎn)動(dòng),秒針繞一圈360度,共60秒,所以1秒轉(zhuǎn)動(dòng)6度
    secondPointer.Angle = DateTime.Now.Second * 6;
    //分針轉(zhuǎn)動(dòng),分針繞一圈360度,共60分,所以1分轉(zhuǎn)動(dòng)6度
    minutePointer.Angle = DateTime.Now.Minute * 6;
    //時(shí)針轉(zhuǎn)動(dòng),時(shí)針繞一圈360度,共12時(shí),所以1時(shí)轉(zhuǎn)動(dòng)30度。
    //另外同一個(gè)小時(shí)內(nèi),隨著分鐘數(shù)的變化(繞一圈60分鐘),時(shí)針也在緩慢變化(轉(zhuǎn)動(dòng)30度,30/60=0.5)
    hourPointer.Angle = (DateTime.Now.Hour * 30)+ (DateTime.Now.Minute * 0.5);
    //更新時(shí)間值
    this.labTime.Content = DateTime.Now.ToString("HH:mm:ss");
   }));
  }

 }
}

4、編譯運(yùn)行,如果運(yùn)氣不錯(cuò)的話,應(yīng)該能顯示如下效果:

總結(jié)

WPF可以用RotateTransform中的Angle進(jìn)行旋轉(zhuǎn),可以指定中心點(diǎn)(CenterX,CenterY)

 <Rectangle.RenderTransform>
  <RotateTransform x:Name="hourPointer" CenterX="0" CenterY="70" Angle="90" />
 </Rectangle.RenderTransform>

以上就是WPF技術(shù)實(shí)現(xiàn)時(shí)鐘的效果,小編的水平有限,如果有錯(cuò)誤的地方請(qǐng)大家諒解,大家共同進(jìn)步。

相關(guān)文章

  • 淺談C#各種數(shù)組直接的數(shù)據(jù)復(fù)制/轉(zhuǎn)換

    淺談C#各種數(shù)組直接的數(shù)據(jù)復(fù)制/轉(zhuǎn)換

    下面小編就為大家?guī)硪黄獪\談C#各種數(shù)組直接的數(shù)據(jù)復(fù)制/轉(zhuǎn)換。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • C#實(shí)現(xiàn)子窗體與父窗體通信方法實(shí)例總結(jié)

    C#實(shí)現(xiàn)子窗體與父窗體通信方法實(shí)例總結(jié)

    這篇文章主要介紹了C#實(shí)現(xiàn)子窗體與父窗體通信方法,實(shí)例總結(jié)了常用的四種窗體通信方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • c#委托把方法當(dāng)成參數(shù)(實(shí)例講解)

    c#委托把方法當(dāng)成參數(shù)(實(shí)例講解)

    本篇文章主要是對(duì)c#委托把方法當(dāng)成參數(shù)的實(shí)例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C# 設(shè)計(jì)模式系列教程-橋接模式

    C# 設(shè)計(jì)模式系列教程-橋接模式

    橋接模式降低了沿著兩個(gè)或多個(gè)維度擴(kuò)展時(shí)的復(fù)雜度,防止類的過度膨脹,解除了兩個(gè)或多個(gè)維度之間的耦合,使它們沿著各自方向變化而不互相影響。
    2016-06-06
  • c# 解決IIS寫Excel的權(quán)限問題

    c# 解決IIS寫Excel的權(quán)限問題

    使用以上方法必須對(duì)dcom進(jìn)行配置,給用戶使用office的權(quán)限
    2012-10-10
  • C#8 的模式匹配實(shí)現(xiàn)

    C#8 的模式匹配實(shí)現(xiàn)

    這篇文章主要介紹了C#8 的模式匹配實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 最新評(píng)論

    西林县| 兴义市| 宁陵县| 宁武县| 临沭县| 海盐县| 宁波市| 台前县| 界首市| 宁强县| 阳新县| 靖宇县| 马山县| 南安市| 息烽县| 诸暨市| 泾阳县| 莱州市| 华阴市| 临夏县| 金秀| 余姚市| 文昌市| 甘泉县| 平罗县| 昆山市| 平舆县| 高青县| 沂南县| 扎赉特旗| 曲水县| 若尔盖县| 若尔盖县| 大冶市| 山西省| 永平县| 大余县| 民和| 长泰县| 平利县| 沙坪坝区|