首页 > 其他分享 >WPF实现加载的动态效果

WPF实现加载的动态效果

时间:2024-12-22 18:52:24浏览次数:3  
标签:Code Visibility 旋转 画布 动态效果 WPF 加载 View

       

 思路:

1.创建一个画布,长宽100*100;

<Canvas Width="100" Height="100">

2.画布上创建一个圆,直径25,位于正上方中间,底色浅灰;

        <Style TargetType="Ellipse">
            <Setter Property="Width" Value="25"/>
            <Setter Property="Height" Value="25"/>
            <Setter Property="Fill" Value="LightGray"/>
            <Setter Property="Canvas.Left" Value="37.5"/>
            <Setter Property="Canvas.Top" Value="0"/>
            <Setter Property="RenderTransformOrigin" Value="0.5,2"/>
        </Style>    

3.以上圆的0.5,2为圆心进行角度旋转,旋转7次,角度为45*N,得到共8个一模一样的圆;

 1             <Ellipse/>
 2             <Ellipse>
 3                 <Ellipse.RenderTransform>
 4                     <RotateTransform Angle="45"/>
 5                 </Ellipse.RenderTransform>
 6             </Ellipse>
 7             <Ellipse>
 8                 <Ellipse.RenderTransform>
 9                     <RotateTransform Angle="90"/>
10                 </Ellipse.RenderTransform>
11             </Ellipse>
12             <Ellipse>
13                 <Ellipse.RenderTransform>
14                     <RotateTransform Angle="135"/>
15                 </Ellipse.RenderTransform>
16             </Ellipse>
17             <Ellipse>
18                 <Ellipse.RenderTransform>
19                     <RotateTransform Angle="180"/>
20                 </Ellipse.RenderTransform>
21             </Ellipse>
22             <Ellipse>
23                 <Ellipse.RenderTransform>
24                     <RotateTransform Angle="225"/>
25                 </Ellipse.RenderTransform>
26             </Ellipse>
27             <Ellipse>
28                 <Ellipse.RenderTransform>
29                     <RotateTransform Angle="270"/>
30                 </Ellipse.RenderTransform>
31             </Ellipse>
32             <Ellipse>
33                 <Ellipse.RenderTransform>
34                     <RotateTransform Angle="315"/>
35                 </Ellipse.RenderTransform>
36             </Ellipse>
View Code

4.再按上述方法分别创建4个圆,旋转至上图红线中4处,底色黑色,设置不同的不透明度Opacity;

 1             <Ellipse x:Name="ell1" Fill="Black" Opacity="0.2">
 2                 <Ellipse.RenderTransform>
 3                     <RotateTransform Angle="0"/>
 4                 </Ellipse.RenderTransform>
 5             </Ellipse>
 6             <Ellipse x:Name="ell2" Fill="Black" Opacity="0.4">
 7                 <Ellipse.RenderTransform>
 8                     <RotateTransform Angle="45"/>
 9                 </Ellipse.RenderTransform>
10             </Ellipse>
11             <Ellipse x:Name="ell3" Fill="Black" Opacity="0.6">
12                 <Ellipse.RenderTransform>
13                     <RotateTransform Angle="90"/>
14                 </Ellipse.RenderTransform>
15             </Ellipse>
16             <Ellipse x:Name="ell4" Fill="Black" Opacity="0.8">
17                 <Ellipse.RenderTransform>
18                     <RotateTransform Angle="135"/>
19                 </Ellipse.RenderTransform>
20             </Ellipse>
View Code

5.为画布Canvas增加Load动画,不停地更改上述4个圆的角度,实现旋转的视觉效果,中间写进度或者提示文字均可;

            <Canvas.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard>
                        <Storyboard RepeatBehavior="Forever">
                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ell1"
                                                           Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)">
                                <DiscreteDoubleKeyFrame KeyTime="0:0:0.1" Value="45"/>
                                <DiscreteDoubleKeyFrame KeyTime="0:0:0.2" Value="90"/>
                                <DiscreteDoubleKeyFrame KeyTime="0:0:0.3" Value="135"/>
                                <DiscreteDoubleKeyFrame KeyTime="0:0:0.4" Value="180"/>
                                <DiscreteDoubleKeyFrame KeyTime="0:0:0.5" Value="225"/>
                                <DiscreteDoubleKeyFrame KeyTime="0:0:0.6" Value="270"/>
                                <DiscreteDoubleKeyFrame KeyTime="0:0:0.7" Value="315"/>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                    //另三个不再赘述
                </EventTrigger>
            </Canvas.Triggers>  
View Code

6.Canvas放在窗体中心平时隐藏需要时调出 或 以窗口形式弹出均可;

<load:LoadingWindow x:Name="loadingWD" Visibility="Hidden"/>

需要时调出  

loadingWD.Visibility = flag ? Visibility.Visible : Visibility.Hidden;

  

标签:Code,Visibility,旋转,画布,动态效果,WPF,加载,View
From: https://www.cnblogs.com/cfsl/p/18622393

相关文章

  • EFI Boot Editor 是一个用于管理和编辑计算机引导加载程序的工具,尤其在基于 UEFI (Uni
    EFIBootEditor是一个用于管理和编辑计算机引导加载程序的工具,尤其在基于UEFI(UnifiedExtensibleFirmwareInterface)固件的系统上,EFI(或称为UEFI)引导加载器起着至关重要的作用。它允许用户通过图形界面或命令行界面对启动项进行定制、编辑、删除、添加等操作。以下是关于E......
  • Wpf Prism中添加新控件的区域适配器
    上节中我们讲了怎么样定义一个区域与区域引用视图,但并不是所有的组件都支持组件当作区域使用,比如StackPanel就不支持当作区域来使用:我们自接使用会报以下错误,这时候我们就要自定义一个区域适配器: 1.首先我们创建一个StackPanelRegionAdapter的类:1usingPrism.Regions;2......
  • wpf Prism中区域的使用
    1.首先,我们创建一个区域内容,这里我们创建一个ViewA使用UseControl这个就是普通的UseControl,只是加了个TextBlock,显示ViewAViewA.xaml1<UserControlx:Class="MyTest.ViewA"2xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3......
  • Wpf加入Prism框架
          Prism是一个开源框架,用于在WPF、XamarinForms、Uno/WinUI等应用中创建松耦合、可维护、可测试的XAML应用程序。Prism提供了一组设计模式的实现,这些设计模式有助于编写结构良好且可维护的XAML应用程序,包括MVVM,dependencyinjection,commands,EventAggregator等......
  • JVM专题学习之类加载器(二)
    类加载器三层类加载器1.启动类加载器-BootstrapClassLoaderAppClassLoader负责加载核心类,存放在lib目录下的jar包或class文件。2.扩展类加载器-ExtensionClassLoaderExtensionClassLoader负责加载\lib\ext目录下的jar包或class文件,我们可以将通用性的功能,打成jar包放置到ext......
  • 49天精通Java(Day 30):Java的类加载机制
    ......
  • require如何同步加载模块?
    在前端开发中,require通常用于在Node.js环境中同步加载模块。然而,在浏览器环境中,原生的JavaScript并不支持require函数来同步加载模块。不过,你可以通过一些工具和库来实现在浏览器中的模块化加载。以下是一些常见的方法来实现前端开发中模块的同步加载:使用Browserify或......
  • WPF DrawingVisual DrawingContext DrawImage RenderTargetBitmap
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSystem.Windows.Input;......
  • 一个使用 WPF 开发的管理系统
    一个使用WPF开发的管理系统 思维导航前言WPF介绍项目技术栈项目源码结构项目运行截图项目源码地址优秀项目和框架精选前言最近发现有不少小伙伴在学习 WPF,今天大姚给大家分享一个使用WPF开发的管理系统,该项目包含了用户登录、人员管理、角色授权、插件管......
  • WPF call graphic draw functions via bitmap converting to bitmapimage
    usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows......