首页 > 编程语言 >【转】[C#][WPF] 旋转的播放按钮

【转】[C#][WPF] 旋转的播放按钮

时间:2024-09-05 14:17:38浏览次数:10  
标签:99.84 45.568 44.544 C# 102.4 播放按钮 54.784 WPF c0

转自:http://www.dmskin.com

运行后播放按钮就会一直旋转,而暂停按钮不动。

<Window x:Class="WPF.Views.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF.Views"
        mc:Ignorable="d"Height="450" Width="800">
    <Window.Resources>
        <ResourceDictionary>
            <SolidColorBrush x:Key="ThemeColor" Color="#efefef" />
            <Geometry x:Key="Icon_Play">M995.76206814 481.44796294L614.67632587 261.43256005C609.21769525 258.2551482 603.1480239 256.66644227 596.99688042 256.66644227c-6.06967137 0-12.18007878 1.58870593-17.63870938 4.76611779C568.44090979 267.66517562 561.71946164 279.39715784 561.71946164 291.98459711l0 440.15301391c0 12.62817532 6.72144816 24.27868545 17.67944544 30.55203707 5.41789458 3.13667581 11.52830199 4.72538173 17.6387094 4.72538173 6.11040741 0 12.18007878-1.58870593 17.67944544-4.72538173l381.08574227-220.05613893C1006.72006543 536.27868545 1013.44151358 524.62817532 1013.44151358 512 1013.44151358 499.41256073 1006.72006543 487.76205059 995.76206814 481.44796294z</Geometry>
            <Geometry x:Key="Icon_Pause">M347.648 873.472c0 54.784-45.568 99.84-102.4 99.84s-102.4-44.544-102.4-99.84V151.04c0-54.784 45.568-99.84 102.4-99.84s102.4 44.544 102.4 99.84v722.432z m533.504 0c0 54.784-45.568 99.84-102.4 99.84s-102.4-44.544-102.4-99.84V151.04c0-54.784 45.568-99.84 102.4-99.84s102.4 44.544 102.4 99.84v722.432z</Geometry>

            <Style TargetType="TextBlock">
                <Setter Property="FontSize" Value="14" />
            </Style>
            <Style TargetType="TextBox" x:Key="row1">
                <Setter Property="FontSize" Value="14" />
                <Setter Property="HorizontalContentAlignment" Value="Center" />
            </Style>
  
            <Style x:Key="MusicPlayButton" TargetType="ToggleButton">
                <Setter Property="Cursor" Value="Hand" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ToggleButton}">                            
                            <Border
                                x:Name="bg"
                                Background="White"
                                CornerRadius="100"
                                UseLayoutRounding="True">
                                <Path
                                    x:Name="icon"
                                    Width="16"
                                    Height="16"
                                    Margin="5,0,0,0"
                                    Data="{StaticResource Icon_Play}"
                                    Fill="Green"
                                    Stretch="Uniform" />
                                <Border.RenderTransform>
                                    <RotateTransform x:Name="rotateTransform" Angle="0" CenterX="16" CenterY="16" />
                                </Border.RenderTransform>
                            </Border>
                            
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsChecked" Value="True">
                                    <Setter TargetName="icon" Property="Margin" Value="5,0,0,0" />
                                    <Setter TargetName="icon" Property="Data" Value="{StaticResource Icon_Play}" />
                                </Trigger>
                                <Trigger Property="IsChecked" Value="False">
                                    <Setter TargetName="icon" Property="Margin" Value="0" />
                                    <Setter TargetName="icon" Property="Data" Value="{StaticResource Icon_Pause}" />
                                    <Setter TargetName="icon" Property="Fill" Value="Red" />
                                </Trigger>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="bg" Property="Background" Value="{StaticResource ThemeColor}" />
                                </Trigger>

                                <EventTrigger RoutedEvent="ToggleButton.Checked">
                                    <BeginStoryboard x:Name="Spinner">
                                        <Storyboard>
                                            <DoubleAnimation Storyboard.TargetName="rotateTransform"
                                                             Storyboard.TargetProperty="Angle"
                                                             To="360"
                                                             RepeatBehavior="Forever"
                                                             Duration="0:0:10" />
                                        </Storyboard>
                                    </BeginStoryboard>
                                </EventTrigger>
                                <EventTrigger RoutedEvent="ToggleButton.MouseEnter">
                                    <PauseStoryboard BeginStoryboardName="Spinner" />
                                </EventTrigger>
                                <EventTrigger RoutedEvent="ToggleButton.MouseLeave">
                                    <ResumeStoryboard BeginStoryboardName="Spinner" />
                                </EventTrigger>
                                <EventTrigger RoutedEvent="ToggleButton.Unchecked">
                                    <BeginStoryboard>
                                        <Storyboard>
                                            <DoubleAnimation Storyboard.TargetName="rotateTransform"
                                                             Storyboard.TargetProperty="Angle"
                                                             To="0"
                                                             Duration="0:0:0.1" />
                                        </Storyboard>
                                    </BeginStoryboard>
                                </EventTrigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions >
            <RowDefinition Height="36" />
            <RowDefinition />
        </Grid.RowDefinitions>

        <TextBlock Text="{Binding NowTimeText}" Margin="10 0" VerticalAlignment="Center" />

        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <ToggleButton Width="32" Height="32" Style="{StaticResource MusicPlayButton}" IsChecked="{Binding RunState}" />
        </StackPanel>

        <TextBox Margin="3" Grid.Row="1" AcceptsReturn="True" TextWrapping="Wrap" 
                 VerticalScrollBarVisibility="Auto" />
    </Grid>
</Window>

 

标签:99.84,45.568,44.544,C#,102.4,播放按钮,54.784,WPF,c0
From: https://www.cnblogs.com/z5337/p/18398325

相关文章

  • Navicat如何导出Excel格式的表结构
    第1步:打开Navicat,双击打开你要导出表结构的数据库,点击“查询”——“新建查询”第2步:将以下SQL语句复制粘贴进查询编辑器,并修改数据库名称与表名称SELECTCOLUMN_NAME列名,DATA_TYPE数据类型,CHARACTER_MAXIMUM_LENGTH长度,IS_NULLABLE是否为空,C......
  • Java应用的数据库连接池调优:HikariCP与C3P0
    Java应用的数据库连接池调优:HikariCP与C3P0大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨如何在Java应用中优化数据库连接池,特别是HikariCP与C3P0两个流行的连接池工具。连接池调优是提升应用性能的关键步骤,通过合适的配置,可以显......
  • Java中的服务契约测试:Pact与Spring Cloud Contract
    Java中的服务契约测试:Pact与SpringCloudContract大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨在Java应用中如何实现服务契约测试,并对比两种流行的服务契约测试工具:Pact与SpringCloudContract。这两种工具可以帮助我们在微服......
  • Java应用的分布式配置中心:Apollo与Spring Cloud Config
    Java应用的分布式配置中心:Apollo与SpringCloudConfig大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java应用中使用分布式配置中心来管理配置,重点介绍Apollo与SpringCloudConfig这两种流行的配置管理工具,并通过代码示例演示......
  • C++(for)
    目录1.经典的for循环2.基于范围的for循环(C++11引入)3.无限for循环4.嵌套for循环5.使用continue和break控制循环流总结C++中有多种形式的for循环,每种形式适合不同的应用场景。1.经典的for循环这是C++中最基础的循环类型,由三部分组成:初始化、条件、......
  • Linux 系统中的 `/etc/sysctl.conf` 配置文件内核参数设置
    以下是对这些参数的详细解释:网络参数net.ipv4.ip_forward=0:禁用IP转发,防止系统作为路由器转发数据包。net.ipv4.conf.default.rp_filter=1:启用反向路径过滤,增加网络安全性,防止IP地址欺骗。net.ipv4.conf.default.accept_source_route=0:禁用源路由选项,防止数据包通......
  • C++ 模板(函数模板)
    模板模板介绍C++提供了函数模板(functiontemplate)。所谓函数模板。实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡事函数体相同的函数都可以使用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调......
  • base64是什么,在 C# 中对 Base64 字符串进行编码和解码
    原文链接:https://blog.csdn.net/ty_oldman/article/details/116306785         https://blog.csdn.net/qq_55752792/article/details/139681358base64是什么Base64编码,是由64个字符组成编码集:26个大写字母AZ,26个小写字母az,10个数字0~9,符号“+”与符号“/”。Bas......
  • sicp每日一题[1.45]
    Exercise1.45WesawinSection1.3.3thatattemptingtocomputesquarerootsbynaivelyfindingafixedpointofy->x/ydoesnotconverge,andthatthiscanbefixedbyaveragedamping.Thesamemethodworksforfindingcuberootsasfixedpointsof......
  • YOLOv8改进 | 注意力篇 | YOLOv8引入MSCAAttention(MSCA)注意力机制
    1. MSCA介绍1.1 摘要:我们提出了SegNeXt,一种用于语义分割的简单卷积网络架构。由于自注意力在编码空间信息方面的效率,最近基于变压器的模型在语义分割领域占据了主导地位。在本文中,我们证明卷积注意力是一种比Transformer中的自注意力机制更高效、更有效的编码上下文......