zoukankan      html  css  js  c++  java
  • 2018-8-10-win10-UWP-圆形等待

    title author date CreateTime categories
    win10 UWP 圆形等待
    lindexi
    2018-08-10 19:16:50 +0800
    2018-2-13 17:23:3 +0800
    Win10 UWP

    看到一个圆形好像微软 ProgressRing 控件 0_1321962945yCXF - 副本.gif 如何去做这个控件,我们可以用自定义控件

    新建一个用户控件,可以按 ctrl+shift+a 打开后,选用户控件

    我们可以用 Rectangle 做圆形边

    只要 Rectangle RadiusX>0 RadiusX是圆角度

    因为每个 Rectangle 都一样,我们可以资源

    资源我们写在 Grid

            <Grid.Resources>
    
                
    
            </Grid.Resources>
    

    资源设置需要选 TargetType

    我们是 Rectangle ,于是我们还有给他一个 key

                    <Style x:Key="RectangleStyle1" TargetType="Rectangle">
    
                    </Style>
    

    因为不知道这个要叫什么,就用右击资源

    vs默认就帮我写了 RectangleStyle1

    每个项需要设置属性,使用 Setter

                        <Setter Property="" Value=""/>
    

    设置中间

                    <Style x:Key="RectangleStyle1" TargetType="Rectangle">
    
                        <Setter Property="HorizontalAlignment" Value="Center"/>
    
                        <Setter Property="VerticalAlignment" Value="Center"/>
    
                    </Style>
    

    我们跑一下,看起来 Rectangle 很大

    为看起来比较小,把 Height 改为 20

                        <Setter Property="Height" Value="50"/>
    
                        <Setter Property="Width" Value="2"/>
    

    全部资源可以看下面,直接复制是可以

     <Style x:Key="RectangleStyle1" TargetType="Rectangle">
    
                        <Setter Property="RadiusX" Value="1"/>
    
                        <Setter Property="RadiusY" Value="2"/>
    
                        <Setter Property="Fill" Value="Black"/>
    
                        <Setter Property="Opacity" Value="0.2"/>
    
                        <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
    
                        <Setter Property="HorizontalAlignment" Value="Center"/>
    
                        <Setter Property="VerticalAlignment" Value="Top"/>
    
                        <Setter Property="Height" Value="50"/>
    
                        <Setter Property="Width" Value="2"/>
    
                    </Style>
    

    我们做10个 Rectangle

    使用 RectangleStyle1 在 Rectangle 使用 style="{StaticResource RectangleStyle1}"

    可以看到我们除了中间,其他都和原来一样。中间是白色比较好,添加 Ellipse 。

                <Ellipse Height="10" Width="10" Fill="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    

    每个 Rectangle 需要一个名字

    我们想要 xaml 的控件会动,可以使用

                <Grid.Triggers>
    
                    <EventTrigger RoutedEvent="Grid.Loaded">
    
                        <BeginStoryboard>
    
                            <Storyboard RepeatBehavior="Forever">
    
                                <DoubleAnimation Storyboard.TargetName="r01" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.00000" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r02" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.08333" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r03" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.16666" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r04" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.24999" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r05" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.33332" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r06" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.41665" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r07" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.49998" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r08" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.58331" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r09" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.66664" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r10" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.74997" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r11" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.83330" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r12" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.91663" To="0"/>
    
                            </Storyboard>
    
                        </BeginStoryboard>
    
                    </EventTrigger>
    
                </Grid.Triggers>
    

    Forever 是从开始一直动

    我们就写完了我们的控件,如果需要使用控件,就直接写下面代码。注意 local 是我们的命名空间,我们的控件就放在方案的目录,不放在其他文件夹,命名空间也是和方案默认一样。

            <local:round ></local:round>
    

    全部代码

    round.xaml
    
    <UserControl
    
        x:Class="roundload.round"
    
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    
        xmlns:local="using:roundload"
    
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    
        mc:Ignorable="d"
    
        d:DesignHeight="300"
    
        d:DesignWidth="400">
    
        <Grid>
    
            <Grid>
    
                <Grid.Resources>
    
                    <Style x:Key="RectangleStyle1" TargetType="Rectangle">
    
                        <Setter Property="RadiusX" Value="1"/>
    
                        <Setter Property="RadiusY" Value="2"/>
    
                        <Setter Property="Fill" Value="Black"/>
    
                        <Setter Property="Opacity" Value="0.2"/>
    
                        <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
    
                        <Setter Property="HorizontalAlignment" Value="Center"/>
    
                        <Setter Property="VerticalAlignment" Value="Center"/>
    
                        <Setter Property="Height" Value="50"/>
    
                        <Setter Property="Width" Value="2"/>
    
                    </Style>
    
                </Grid.Resources>
    
                <Rectangle x:Name="r01" Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="0"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r02" Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="30"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r03" Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="60"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r04"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="90"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r05"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="120"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r06"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="150"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r07"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="180"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r08"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="210"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r09"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="240"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r10"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="270"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r11"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="300"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Rectangle x:Name="r12"  Style="{StaticResource RectangleStyle1}">
    
                    <Rectangle.RenderTransform>
    
                        <RotateTransform Angle="330"/>
    
                    </Rectangle.RenderTransform>
    
                </Rectangle>
    
                <Ellipse Height="10" Width="10" Fill="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    
                <Grid.Triggers>
    
                    <EventTrigger RoutedEvent="Grid.Loaded">
    
                        <BeginStoryboard>
    
                            <Storyboard RepeatBehavior="Forever">
    
                                <DoubleAnimation Storyboard.TargetName="r01" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.00000" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r02" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.08333" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r03" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.16666" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r04" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.24999" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r05" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.33332" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r06" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.41665" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r07" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.49998" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r08" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.58331" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r09" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.66664" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r10" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.74997" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r11" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.83330" To="0"/>
    
                                <DoubleAnimation Storyboard.TargetName="r12" Storyboard.TargetProperty="Opacity" AutoReverse="True" Duration="0:0:0.08333" BeginTime="0:0:0.91663" To="0"/>
    
                            </Storyboard>
    
                        </BeginStoryboard>
    
                    </EventTrigger>
    
                </Grid.Triggers>
    
            </Grid>
    
        </Grid>
    
    </UserControl>
    
    MainPage
    
    <Page
    
        x:Class="roundload.MainPage"
    
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    
        xmlns:local="using:roundload"
    
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    
        mc:Ignorable="d">
    
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
            
    
            <local:round ></local:round>
    
        </Grid>
    
    </Page>
    

    代码:https://github.com/lindexi/lindexi_gd/tree/master/roundload

    参考:http://blog.csdn.net/qqamoon/article/details/7001693

  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    关于if和else和switch case的用法和程序编码操作过程
    关于java的特点
    关于JAVA的数据类型
    关于java的学习
    力扣482. 密钥字符串 S python--每天一题
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085504.html
Copyright © 2011-2022 走看看