• WPF按钮实现水波纹效果


    xaml代码如下

    <Button x:Class="UI.btn.ZButton"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                     xmlns:i="http://schemas.microsoft.com/xaml/behaviors" xmlns:btn="clr-namespace:UI.btn"
            d:DesignHeight="450" d:DesignWidth="800" Cursor="Hand">
        <Button.Template>
            <ControlTemplate  TargetType="Button" >
                <Grid ClipToBounds="True" Background="{TemplateBinding Background}" MouseLeftButtonDown="Grid_MouseLeftButtonDown"  >
                    <Border>
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}"  >
                        </ContentPresenter>
                    </Border>
                    <Path Fill="Black" x:Name="MyPath">
                        <Path.Data>
                            <EllipseGeometry x:Name="MyEllip" Center="{Binding MyProperty}"   RadiusX="0" RadiusY="{Binding RelativeSource={RelativeSource Mode=Self},Path=RadiusX}">
                            </EllipseGeometry>
                        </Path.Data>
                    </Path>
                </Grid> 
            </ControlTemplate>
        </Button.Template>
    </Button>

    CS代码

    private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
             var target=Template.FindName("MyEllip", this) as EllipseGeometry;
                target.Center = Mouse.GetPosition(this);
                var animation = new DoubleAnimation()
                {
                    From=0,
                    To=150,
                    Duration=new Duration(TimeSpan.FromSeconds(1))
                };
                target.BeginAnimation(EllipseGeometry.RadiusXProperty, animation);
                var animation2 = new DoubleAnimation()
                {
                    From = 0.3,
                    To = 0,
                    Duration = new Duration(TimeSpan.FromSeconds(1))
                };
                var target2= Template.FindName("MyPath",this) as Path;
                target2.BeginAnimation(Path.OpacityProperty, animation2);
            }

  • 相关阅读:
    Qt 解析EXcel文件
    Qt PC 安卓 tcp传输文件
    Qt listwigwt item 加入自定义元素
    Qt 独立运行时伴随CMD命令窗口
    xml模块
    shelve模块
    json模块 pickle模块
    sys 模块
    os模块
    添加变量
  • 原文地址:https://www.cnblogs.com/zt199510/p/13224906.html
Copyright © 2020-2023  润新知