• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 超炫酷的WPF实现Loading控件效果

超炫酷的WPF实现Loading控件效果

作者:JackWang-CUMT 字体:[增加 减小] 来源:互联网 时间:2017-05-28

JackWang-CUMT 通过本文主要向大家介绍了wpf loading,wpf 炫酷界面,wpf动态添加控件,wpfdatagrid控件,wpf控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Win8系统的Loading效果还是很不错的,网上也有人用CSS3等技术实现,研究了一下,并打算用WPF自定义一个Loading控件实现类似的效果,并可以让用户对Loading的颗粒(Particle)背景颜色进行自定义,话不多说,直接上代码:

1、用VS2012新建一个WPF的用户控件库项目WpfControlLibraryDemo,VS自动生成如下结构:

2、删除UserControl1.xaml,并新建一个Loading的CustomControl(不是UserControl),如下图所示:

3、如果报错找不到Loading类型,请编译,下面在Generic.xaml主题文件中对Loading的样式和内容进行定义(注意添加

xmlns:system = "clr-namespace:System;assembly=mscorlib"),代码如下:
<ResourceDictionary
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:system = "clr-namespace:System;assembly=mscorlib"
 xmlns:local="clr-namespace:WpfControlLibraryDemo">


 <Style TargetType="{x:Type local:Loading}">
 <Setter Property="Template">
  <Setter.Value>
  <ControlTemplate TargetType="{x:Type local:Loading}">
   <Border Background="{TemplateBinding Background}"
    BorderBrush="{TemplateBinding BorderBrush}"
    BorderThickness="{TemplateBinding BorderThickness}">
   <Grid Width = "50" Height = "50">
    <Grid.Resources>
    <!-- Value Converters -->
    
    <!-- Particle Styling ,must to has RelativeSource -->
    <SolidColorBrush x:Key = "ParticleColor" Color = "{Binding Path=FillColor,RelativeSource={RelativeSource TemplatedParent}}" />
    <SolidColorBrush x:Key = "ParticleBackgroundColor" Color = "Transparent"/>
    <system:Double x:Key = "ParticleOpacity">1</system:Double>
    <system:Double x:Key = "ParticleRadius">5</system:Double>

    <system:Double x:Key = "StartingPointX">0</system:Double>
    <system:Double x:Key = "StartingPointY">-20</system:Double>

    <system:Double x:Key = "RotationPointX">0.5</system:Double>
    <system:Double x:Key = "RotationPointY">0.5</system:Double>

    <!-- StoryBoard -->
    <system:TimeSpan x:Key = "StoryBoardBeginTimeP0">00:00:00.000</system:TimeSpan>
    <system:TimeSpan x:Key = "StoryBoardBeginTimeP1">00:00:00.100</system:TimeSpan>
    <system:TimeSpan x:Key = "StoryBoardBeginTimeP2">00:00:00.200</system:TimeSpan>
    <system:TimeSpan x:Key = "StoryBoardBeginTimeP3">00:00:00.300</system:TimeSpan>
    <system:TimeSpan x:Key = "StoryBoardBeginTimeP4">00:00:00.400</system:TimeSpan>
    <Duration x:Key = "StoryBoardDuration">00:00:01.800</Duration>

    <!-- Particle Origin Angles -->
    <system:Double x:Key = "ParticleOriginAngleP0">0</system:Double>
    <system:Double x:Key = "ParticleOriginAngleP1">-10</system:Double>
    <system:Double x:Key = "ParticleOriginAngleP2">-20</system:Double>
    <system:Double x:Key = "ParticleOriginAngleP3">-30</system:Double>
    <system:Double x:Key = "ParticleOriginAngleP4">-40</system:Double>

    <!-- Particle Position & Timing 1 -->
    <system:Double x:Key = "ParticleBeginAngle1">0</system:Double>
    <system:Double x:Key = "ParticleEndAngle1">90</system:Double>
    <system:TimeSpan x:Key = "ParticleBeginTime1">00:00:00.000</system:TimeSpan>
    <Duration x:Key = "ParticleDuration1">00:00:00.750</Duration>

    <!-- Particle Position & Timing 2 -->
    <system:Double x:Key = "ParticleBeginAngle2">90</system:Double>
    <system:Double x:Key = "ParticleEndAngle2">270</system:Double>
    <system:TimeSpan x:Key = "ParticleBeginTime2">00:00:00.751</system:TimeSpan>
    <Duration x:Key = "ParticleDuration2">00:00:00.300</Duration>

    <!-- Particle Position & Timing 3 -->
    <system:Double x:Key = "ParticleBeginAngle3">270</system:Double>
    <system:Double x:Key = "ParticleEndAngle3">360</system:Double>
    <system:TimeSpan x:Key = "ParticleBeginTime3">00:00:01.052</system:TimeSpan>
    <Duration x:Key = "ParticleDuration3">00:00:00.750</Duration>

    <Style x:Key = "EllipseStyle" TargetType = "Ellipse">
     <Setter Property = "Width" Value = "{StaticResource ParticleRadius}"/>
     <Setter Property = "Height" Value = "{StaticResource ParticleRadius}"/>
     <Setter Property = "Fill" Value = "{StaticResource ParticleColor}"/>
     <Setter Property = "RenderTransformOrigin" Value = "0.5, 0.5"/>
     <Setter Property = "Opacity" Value = "{StaticResource ParticleOpacity}"/>
    </Style>
    </Grid.Resources>
    <Canvas Width = "1" Height = "1" Margin="0,0,0,0">
    <Canvas.Triggers>
     <EventTrigger RoutedEvent = "Canvas.Loaded">
     <EventTrigger.Actions>
      <BeginStoryboard>
      <Storyboard
    
    BeginTime = "{StaticResource StoryBoardBeginTimeP0}"
    Duration = "{StaticResource StoryBoardDuration}"
    RepeatBehavior = "Forever">
       <DoubleAnimation
    Storyboard.TargetName = "p0"
    Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"
    From = "{StaticResource ParticleBeginAngle1}"
    To = "{StaticResource ParticleEndAngle1}"
    BeginTime = "{StaticResource ParticleBeginTime1}"
    Duration = "{StaticResource ParticleDuration1}"/>
       <DoubleAnimation
    Storyboard.TargetName = "p0"
    Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"
    From = "{StaticResource ParticleBeginAngle2}"
    To = "{StaticResource ParticleEndAngle2}"
    BeginTime = "{StaticResource ParticleBeginTime2}"
    Duration = "{StaticResource ParticleDuration2}"/>
       <DoubleAnimation
    Storyboard.TargetName = "p0"
    Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"
    From = "{StaticResource ParticleBeginAngle3}"
    To = "{StaticResource ParticleEndAngle3}"
    BeginTime = "{StaticResource ParticleBeginTime3}"
    Duration = "{StaticResource ParticleDuration3}"/>
      </Storyboard>
      </BeginStoryboard>
      <BeginStoryboard>
      <Storyboard
    
    BeginTime = "{StaticResource StoryBoardBeginTimeP1}"
    Duration = "{StaticResource StoryBoardDuration}"
    RepeatBehavior = "Forever">

       <DoubleAnimation
    Storyboard.TargetName = "p1"
    Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"
    From = "{StaticResource ParticleBeginAngle1}"
    To = "{StaticResource ParticleEndAngle1}"
    BeginTime = "{StaticResource ParticleBeginTime1}"
    Duration = "{StaticResource ParticleDuration1}"/>
       <DoubleAnimation
    Storyboard.TargetName = "p1"
    Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"
    From = "{StaticResource ParticleBeginAngle2}"
    To = "{StaticResource ParticleEndAngle2}"
    BeginTime = "{StaticResource ParticleBeginTime2}"
    Duration = "{StaticResource ParticleDuration2}"/>
       <DoubleAnimation
    Storyboard.TargetName = "p1"
    Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"
    From = "{StaticResource ParticleBeginAngle3}"
    To = "{StaticResource ParticleEndAngle3}"
    BeginTime = "{StaticResource ParticleBeginTime3}"
    Duration = "{StaticResource ParticleDuration3}"/>




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 超炫酷的WPF实现Loading控件效果

相关文章

  • 2017-05-28winform 实现选择文件和选择文件夹对话框的简单实例
  • 2017-05-28C#实现创建桌面快捷方式与添加网页到收藏夹的示例
  • 2017-05-28C#实现线程池的简单示例
  • 2017-05-28c#打印预览控件中实现用鼠标移动页面功能代码分享
  • 2017-05-28c#启动EXE文件的方法实例
  • 2017-05-28C# Memcached缓存用法实例详解
  • 2017-05-28C#基础教程之IComparable用法,实现List<T>.sort()排序
  • 2017-05-28C#条码生成及打印实例代码
  • 2017-05-28C#实现将数据导出到word或者Excel中的方法
  • 2017-05-28C#实现多线程写入同一个文件的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#书写规范
    • C#实现保存文件时重名自动生成新文件的方法
    • C#与PHP的md5计算结果不同的解决方法
    • sqlserver备份还原数据库功能封装分享
    • 初步认识C#中的Lambda表达式和匿名方法
    • C#程序窗体间使用回调事件方式通讯示例
    • C#使用oledb操作excel文件的方法
    • C#获取ListView鼠标下的Item实例
    • 用C#在本地创建一个Windows帐户(DOS命令)
    • WinForm 自动完成控件实例代码简析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有