好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效按钮

我们先来看看Quartz MS字体动态显示系统时间的效果,难度相较于上一篇也要简单许多。

首先是定义一个TextBlock如下。

<Grid>
     <TextBlock Name="tBlockTime" HorizontalAlignment="Center"
         VerticalAlignment="Center" FontSize="68" Foreground="Green"/>
</Grid>

后台代码如下:

private DispatcherTimer dispatcherTimer;

public MainWindow()
{
     InitializeComponent();

     dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
     // 当间隔时间过去时发生的事件
     dispatcherTimer.Tick += new EventHandler(ShowCurrentTime);
     dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 1);
     dispatcherTimer.Start();
}

public void ShowCurrentTime(object sender, EventArgs e)
{
      //获得星期
      //this.tBlockTime.Text = DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("zh-cn"));
      //this.tBlockTime.Text += "\n";

      //获得年月日
      //this.tBlockTime.Text = DateTime.Now.ToString("yyyy:MM:dd");   //yyyy年MM月dd日
      //this.tBlockTime.Text += "\n";

      //获得时分秒
      this.tBlockTime.Text = DateTime.Now.ToString("HH:mm:ss");
}

注意在这个时间的设置时,第一步显示的时间是”=”,随后都是”+=”。比如说要先显示星期,再显示时分秒,就是这样的:

//获得星期
this.tBlockTime.Text = DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("zh-cn"));
this.tBlockTime.Text += "\n";

//获得时分秒
this.tBlockTime.Text += DateTime.Now.ToString("HH:mm:ss");

然后还需要字体,然而字体并不可能是写出来的……我们都需要需要引用资源。

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"
        Width="500" Height="200"
        WindowStyle="None"
        AllowsTransparency="True"
        Background="Black">

    <Window.Resources>
        <Style x:Key="QuartzMSFont">
            <Setter Property="TextElement.FontFamily" Value="Resources/#Quartz MS"/>
        </Style>
    </Window.Resources>

    <Grid>
        <TextBlock Name="tBlockTime" Style="{DynamicResource QuartzMSFont}"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center" FontSize="68" Foreground="Green"/>
    </Grid>

</Window>

这里我只是给大家一个启发,如果系统自带的字体已经不能满足你的艺术感,你完全可以另外找字体。甚至也可以创造字体,近来谷歌苹果都在做这个。

我已经把字体放到项目中了,需要源码/字体的童鞋直接留邮箱……

这一篇内容不多,也算不上精彩,但童鞋们可以看看上一篇:好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字 ,也可以今明天再来看看第三篇~



没想到这篇博客被推荐了啦,内容这么少……绝不能让如此不堪的文章放在首页啦,所以就来添加一点东西咯——也就是前文中的第二个GIF(个人感觉还是蛮炫酷的)。

首先给窗体设置一下吧:

<Window x:Class="WPFButton.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     Title="MainWindow"
        Width="600" Height="400"
        WindowStyle="None"
        AllowsTransparency="True"
        Background="Wheat">

这段代码中的属性在前一篇中都有介绍,大家可以看看。

我定义了这么多的Button,是为了后面的演示效果而已,实际中可能用不到这么多按钮吧,哈哈。

     <Grid>
        <Button Content="Yellow"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="Yellow" Margin="90,37,450,323"/>

        <Button Content="Purple"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="Purple" Margin="450,230,90,130" />

        <Button Content="Green"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="Green" Margin="90,130,450,230" />

        <Button Content="DarkCyan"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="DarkCyan" Margin="450,37,90,323" />

        <Button Content="Black"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="Black" Margin="90,230,450,130"  />

        <Button Content="OrangeRed"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="OrangeRed" Margin="450,136,90,224"/>

        <Button Content="Violet"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="Violet" Margin="270,37,270,323" />

        <Button Content="CornflowerBlue"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="CornflowerBlue" Margin="270,230,270,130"  />

        <Button Content="Lime"
                Style="{StaticResource ResourcesButtonStyle}"
                Background="Lime" Margin="270,136,270,224"/>

        <Button Content="Azure"
            Style="{StaticResource ResourcesButtonStyle}"
            Background="Azure" Margin="90,323,450,37"  />

        <Button Content="Turquoise"
            Style="{StaticResource ResourcesButtonStyle}"
            Background="Turquoise" Margin="270,323,270,37"  />

        <Button Content="Tomato"
            Style="{StaticResource ResourcesButtonStyle}"
            Background="Tomato" Margin="450,323,90,37" />
    </Grid>

这里面用了资源,不要着急,后面会慢慢道来~

如果不用资源它是长这样的:

好吧,废话不多说,上资源。

 <Window.Resources>
        <Style x:Key="ResourcesButtonStyle" TargetType="{x:Type FrameworkElement}" >
            <Setter Property="Width" Value="60"/>
            <Setter Property="Height" Value="40"/>
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect x:Name="OSE" BlurRadius="10"
                                      Color="Lime" Direction="0"
                                      Opacity="1"
                                      RenderingBias="Performance"
                                      ShadowDepth="0" >
                        <Storyboard.TargetProperty>
                            BlurRadius
                        </Storyboard.TargetProperty>
                    </DropShadowEffect>
                </Setter.Value>
            </Setter>
      </Style>
</Window.Resources>    

C#比较好学的一点就是这些属性呀什么的都可以通过名字来猜出来意思,即便猜不出来也可以通过不断的尝试来发现这些属性是做什么的。

属性RenderingBias可以设置侧重于性能还是质量,就像电脑上的显卡设置里那样。

其他那些属性强烈推荐大家不断的修改数值观察最终调试出来程序的反应,这也算是小小的实验了。

上面的资源是静态,还需要加上Storyboard动画,动画嘛,可以以各种属性为参照,这里我以BlurRadius和Color。前者可以间接做出呼吸灯效果(不过后面我将其数值最大设置成了100,要是哪个呼吸灯像这样那就算是喘气了),后者可以更换“呼吸”的色彩。

<Style.Triggers>
   <EventTrigger RoutedEvent="GotFocus">
       <BeginStoryboard>
           <Storyboard>
               <DoubleAnimation
                  Storyboard.TargetProperty="(FrameworkElement.Effect).(DropShadowEffect.BlurRadius)"
                  From="0" To="100"
                  BeginTime="00:00:00" Duration="00:00:01"
                  AutoReverse="True"  RepeatBehavior="Forever"/>

              <ColorAnimationUsingKeyFrames
                  Storyboard.TargetProperty="(FrameworkElement.Effect).(DropShadowEffect.Color)"
                  RepeatBehavior="Forever" AutoReverse="True">
                  <EasingColorKeyFrame KeyTime="0" Value="Yellow"/>
                  <EasingColorKeyFrame KeyTime="0:0:0.4" Value="Purple"/>
                  <EasingColorKeyFrame KeyTime="0:0:0.8" Value="Green"/>
                  <EasingColorKeyFrame KeyTime="0:0:1.2" Value="DarkCyan"/>
                  <EasingColorKeyFrame KeyTime="0:0:1.6" Value="Black"/>
                  <EasingColorKeyFrame KeyTime="0:0:2.0" Value="OrangeRed"/>
                  <EasingColorKeyFrame KeyTime="0:0:2.4" Value="Violet"/>
                  <EasingColorKeyFrame KeyTime="0:0:2.8" Value="CornflowerBlue"/>
                  <EasingColorKeyFrame KeyTime="0:0:3.2" Value="Lime"/>
                  <EasingColorKeyFrame KeyTime="0:0:3.6" Value="Azure"/>
                  <EasingColorKeyFrame KeyTime="0:0:4.0" Value="Turquoise"/>
                  <EasingColorKeyFrame KeyTime="0:0:4.4" Value="Tomato"/>
              </ColorAnimationUsingKeyFrames>
          </Storyboard>
      </BeginStoryboard>
  </EventTrigger>
</Style.Triggers>

BeginTime是起始时间,KeyTime类似于Flash里的关键帧的时间。

前面是BlurRadius的变化,可以用From=”0” To=”100” ;而后面是Color,则需要用Value。

由于CSDN博客上最多只能上传2M的图片,所以这些GIF都很短啦。大家应该多动手尝试呢。我再来贴两张GIF吧~

真实的程序中可不是这样的哦!因为录制GIF的时候为了考虑2M的限制而不得不将录制的帧数调低,所以就“卡顿”成了这样,有明显的“波涛”效果。大家可以用源码调试看看。




感谢您的访问,希望对您有所帮助。 欢迎大家关注、收藏以及评论。



为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp


时间: 2024-08-22 05:56:10

好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效按钮的相关文章

三星S5如何设置按键灯显示时间?S5按键灯显示时间设置方法

1.待机页面下,点击[应用程序].   2.点击[设定].     3.点击[显示].     4.点击[触摸按键灯持续时间].   5.选择您所需设定的按键灯持续显示时间,这里以选择[6秒]为例.(若选择[始终关闭]后,按键灯将被彻底关闭,若选择[始终开启]后,按键灯将持续长亮.)         当然如果你学喜欢这个指示灯的话我们可以直接关闭了这样也是一样的哦,像我就不喜欢这样但在晚上时开启还是有好处的,这样我们可以看到呀,不过现在智能手机都可以直接在屏幕直接打电话了所以也不存在这些问题了,

好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字

大家一进到博客就应该看到这张GIF了吧--好吧,今天不是星期一-- 那么就来一起做做这个效果啦!看完记得点赞哦~ 新建一个WPF项目 如果新建WPF项目应该不用我说了吧,在C#下面找找就好了. MainWindow.xaml 在初始的Window下添加如下属性: x:Name="mainWindow" WindowStartupLocation="CenterScreen" WindowState="Normal" WindowStyle=&qu

Win7系统字体显示比例自定义如何进行更改

  电脑在使用中有时候会发现屏幕显示字体太小或某些文本的显示不协调等问题,这时候就需要对系统字体显示比例相关设置,这样有助于我们阅读屏幕上的内容,那么在w7系统又该如何更改字体显示比例呢?一起来看看win7字体显示比例自定义设置教程吧. 更改方法/步骤: 1.在桌面空白的位置直接单击右键,选择"个性化",如图 2.打开个性化之后,在左下角选择"显示",如图 3.显示界面如下图,默认的是100%,同时此页面只有2个选项,其中一个是100%,剩下的那个则是125%,可以

table iew-ios tableView中,点击单元格,弹出对话框显示单元格的内容。

问题描述 ios tableView中,点击单元格,弹出对话框显示单元格的内容. 在ios tableView中,我想实现的功能是点击单元格,弹出对话框显示单元格的内容.但现在的问题是,我点击第一个单元格时,不弹出对话框,但点击第二个单元格时,弹出对话框,但是显示的内容是第一次点击的单元格的内容.是不是哪里设置有问题 ,求各位大神指教.单元格点击响应代码如下. -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:

解决 Chrome/Firefox 中 Sans-serif 字体显示的问题

用上 Mac 之后,喜欢上了一种字体--"雅痞-简"(Yuppy SC).于是在 Chrome 与 Firefox 中将 Sans-serif 字体设置为 Yuppy SC,却发现在 Chrome 中能正常显示,在 Firefox 中不能正常显示.这篇文章分享的就是如何解决这个字体显示问题. 英文版 Chrome 中的字体设置: 英文版 Firefox 中的字体设置: 这样设置之后,Chrome 中显示正常,下面就是"雅痞-简"的显示效果:

解决Mac版Firefox的中文字体显示问题

这两天在Mac下被Firefox的中文字体显示问题所困扰.在Firefox中将Sans-serif字体设置为SimSun-ExtB(新宋体)或英文字体(这时会用Mac默认中文字体),如下图: 浏览园子的网页时,显示的中文字体怪怪的.丑丑的,见下图.而Chrome中同样的设置,显示的字体却完全不一样. (上图为Firefox中的显示效果) (上图为Chrome中的显示效果) 百思不得其解,后来去苹果官方网站上看了看,发现不存在这个问题,仔细观察了一下,发现了html的不同之处: <html xml

Android版Firefox字体显示过大如何解决

在用Android版Firefox查看博客园首页发现中间区域的字体显示非常大,开始以为是首页css对移动版浏览器支持不好. 后来发现原来这是Firefox for Android的知名bug: Thanks for the report. This is a known bug in Firefox's code to enlarge text to make it more readable on small screens. For details, seehttps://bugzilla.

如何解决迅雷7的配置中心中字体显示模糊

迅雷7打开进入配置中心,字体显示模糊,如下图所示: 原因分析: 迅雷7自动将软件的字体设置成微软雅黑,软件对此字体不能正常显示. 解决方案: 在迅雷7的"配置中心"可以对软件的字体设置.打开"配置中心",选择"基本设置",选择"外观设置",在右边的"其他设置"中,可以更改字体,将字体设置为"宋体". 如下图所示: 将字体更改为"宋体",软件字体可以正常显示.

让IE9不弹出“只显示安全内容”的提示

禁用/启用/提示"只显示安全内容"的弹出框: 启动 Internet Explorer 9. 在工具菜单上单击"Internet 选项". 单击"安全"选项卡,然后再单击"自定义级别". 在安全设置框中,滚动到"其他"部分中,并在"显示混合内容"的下列选项中选择: 选择禁用,将不会显示非安全项目 选择启用,在不询问的情况下,也将始终显示非安全项目 选择提示,网页使用非安全内容时将提示您