• WPF开发随笔收录报警闪烁效果实现


    WPF开发随笔收录-报警闪烁效果实现

     

    一、前言

    工作中目前经手的项目是医疗相关的监护软件,所以会涉及到一些报警效果的实现,今天在这里就简单分享一下实现方式

    二、正文

    1、实现的方式比较的简单,就是通过一个Border控件,然后搭配DataTrigger和ColorAnimationUsingKeyFrames即可实现效果,这里直接贴出代码

    复制代码
    <Window
        x:Class="AlarmFlashDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:AlarmFlashDemo"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="MainWindow"
        Width="600"
        Height="350"
        mc:Ignorable="d">
        <Grid>
            <Border
                Width="200"
                Height="50"
                CornerRadius="25">
                <Border.Style>
                    <Style TargetType="{x:Type Border}">
                        <Setter Property="Background" Value="#FF3BA245" />
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsAnimation}" Value="True">
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard x:Name="stateAnimation">
                                        <Storyboard AutoReverse="True" RepeatBehavior="Forever">
                                            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.(SolidColorBrush.Color)">
                                                <EasingColorKeyFrame KeyTime="0" Value="#555555" />
                                                <EasingColorKeyFrame KeyTime="00:00:0.2" Value="Red" />
                                            </ColorAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </BeginStoryboard>
                                </DataTrigger.EnterActions>
                                <DataTrigger.ExitActions>
                                    <StopStoryboard BeginStoryboardName="stateAnimation" />
                                </DataTrigger.ExitActions>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Border.Style>
            </Border>
            <Button
                Width="200"
                Height="40"
                Margin="0,0,0,60"
                VerticalAlignment="Bottom"
                Click="Button_Click"
                Content="开始/停止" />
        </Grid>
    </Window>
    复制代码

    2、闪烁与否是通过绑定到IsAnimation这个值来控制,IsAnimation这个属性给它添加一下通知属性,然后再设置一下窗口的DataContext,代码如下

    复制代码
    public partial class MainWindow : Window, INotifyPropertyChanged
    {
        private bool isAnimation;
    
        public bool IsAnimation
        {
            get { return isAnimation; }
            set { isAnimation = value; OnPropertyChanged("IsAnimation"); }
        }
    
    
        public MainWindow()
        {
            InitializeComponent();
            IsAnimation = true;
            this.DataContext = this;
        }
    
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            IsAnimation = !IsAnimation;
        }
    
        public event PropertyChangedEventHandler? PropertyChanged;
    
        protected internal virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    复制代码

    3、运行效果如下

  • 相关阅读:
    python处理字符串类型的公式并计算结果
    Python之sklearn学习
    查看python安装的包
    Qt配置Qwt
    Qt开启C++线程里并访问界面
    Matlab的nargin、nargout
    sql获取行数
    C++/QT打印当前行文件名和行数
    QString::number保留小数
    Qt:setGeometry: Unable to set geometry 2170x1017+0+23 on QWidgetWindow/'MainWindowWindow
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16414506.html
Copyright © 2020-2023  润新知