• Lesson9 some interesting things in C#


     

    1、关键帧动画

     

     1)xml 界面

      1 <Page
      2     x:Class="Test.MainPage"
      3     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      4     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      5     xmlns:local="using:Test"
      6     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      7     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      8     mc:Ignorable="d"
      9     Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
     10 
     11 
     12 
     13     <Page.Resources>
     14         <Storyboard  x:Name="Bounce">
     15             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ball" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)">
     16                 <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
     17                 <SplineDoubleKeyFrame KeyTime="00:00:04" Value="297"/>
     18                 <SplineDoubleKeyFrame KeyTime="00:00:06" Value="320"/>
     19             </DoubleAnimationUsingKeyFrames>
     20             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ball" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)">
     21                 <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
     22                 <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-206">
     23                     <SplineDoubleKeyFrame.KeySpline>
     24                         <KeySpline ControlPoint1="0,1" ControlPoint2="1,1"/>
     25                     </SplineDoubleKeyFrame.KeySpline>
     26                 </SplineDoubleKeyFrame>
     27                 <SplineDoubleKeyFrame KeyTime="00:00:04" Value="0">
     28                     <SplineDoubleKeyFrame.KeySpline>
     29                         <KeySpline ControlPoint1="1,0" ControlPoint2="1,1"/>
     30                     </SplineDoubleKeyFrame.KeySpline>
     31                 </SplineDoubleKeyFrame>
     32                 <SplineDoubleKeyFrame KeyTime="00:00:05" Value="-20">
     33                     <SplineDoubleKeyFrame.KeySpline>
     34                         <KeySpline ControlPoint1="0,1" ControlPoint2="1,1"/>
     35                     </SplineDoubleKeyFrame.KeySpline>
     36                 </SplineDoubleKeyFrame>
     37                 <SplineDoubleKeyFrame KeyTime="00:00:06" Value="0">
     38                     <SplineDoubleKeyFrame.KeySpline>
     39                         <KeySpline ControlPoint1="1,0" ControlPoint2="1,1"/>
     40                     </SplineDoubleKeyFrame.KeySpline>
     41                 </SplineDoubleKeyFrame>
     42             </DoubleAnimationUsingKeyFrames>
     43         </Storyboard>
     44     </Page.Resources>
     45     <Grid Background="#FFF0F1FF">
     46         <Grid.RowDefinitions>
     47             <RowDefinition Height="Auto"/>
     48             <RowDefinition Height="*"/>
     49         </Grid.RowDefinitions>
     50 
     51         <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,35,0,28">
     52             <TextBlock Foreground="CornflowerBlue" Text="Naughty Egg" FontSize="50" HorizontalAlignment="Center"/>
     53         </StackPanel>
     54 <!--
     55         <Grid Background="AliceBlue" x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
     56             <Path Margin ="50,-200,0,0" Height="150" Width="150" Stretch="Uniform" 
     57               HorizontalAlignment="Left" >
     58                 <Path.Fill >
     59                     <ImageBrush Stretch="UniformToFill" ImageSource="Assets/Pic1.png" />
     60                 </Path.Fill>
     61                 <Path.Data >
     62                     <GeometryGroup FillRule="EvenOdd" >
     63                         <EllipseGeometry Center="50,50" RadiusX="20" RadiusY="20"
     64                               x:Name="ball">
     65                         </EllipseGeometry>
     66                     </GeometryGroup>
     67                 </Path.Data>
     68             </Path>
     69         </Grid>
     70 -->
     71         <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
     72             <Path Margin ="60,-250,0,0" Height="250" Width="250" Stretch="Uniform" 
     73               HorizontalAlignment="Left">
     74                 <Path.Fill >
     75                     <ImageBrush Stretch="UniformToFill" ImageSource="Assets/Pic1.png" />
     76                 </Path.Fill>
     77                 <Path.Data>
     78                     <GeometryGroup FillRule="EvenOdd" > 
     79                         <EllipseGeometry  RadiusX="35" RadiusY="30" 
     80                              Center="100,100">
     81                         </EllipseGeometry>
     82                     </GeometryGroup>
     83                 </Path.Data>
     84             </Path>
     85             <Ellipse Height="85" HorizontalAlignment="Left" Margin="5,0,0,151" VerticalAlignment="Bottom" Width="85" Fill="#FFF40B0B" Stroke="#FF000000" x:Name="ball" RenderTransformOrigin="0.5,0.5" Opacity="0.5">
     86                 <Ellipse.RenderTransform>
     87                     <TransformGroup>
     88                         <TranslateTransform/>
     89                     </TransformGroup>
     90                 </Ellipse.RenderTransform>
     91             </Ellipse>
     92             <StackPanel Margin="0,300,0,100" >
     93                 <ProgressRing Background="#FFF0F1FF"  x:Name="prgRing" Width="120" Height=" 120" Foreground="LightSeaGreen"
     94                 IsActive ="True"  />
     95 
     96             </StackPanel>
     97 
     98         </Grid>
     99 
    100 
    101     </Grid>
    102 
    103 </Page>

    2) .cs 中控制播放:
     

     1 public MainPage()
     2         {
     3             this.InitializeComponent();
     4             //开始运行Storyboard
     5             Bounce.Begin();
     6             Bounce.Completed += ToNewPage;
     7 
     8             timer.Tick += dispatcherTimer_Tick;
     9             timer.Interval = TimeSpan.FromSeconds(1.1);   //设置刷新的间隔时间
    10             timer.Start();
    11         }
    12         void dispatcherTimer_Tick(object sender, object e)
    13         {
    14             //function to execute
    15             count++;
    16             if (count == 5)
    17             {
    18                 this.prgRing.IsActive = false;
    19             }
    20 
    21         }
    22         private void ToNewPage(object sender, object e)
    23         {
    24             Frame rootFrame = this.Parent as Frame;
    25             if (rootFrame == null)
    26             {
    27                 return;
    28             }
    29             
    30             rootFrame.Navigate(typeof(Choice));
    31         }

    3)效果:

            

    2、C#中的触控

         xml:

     

     1         
     2         <Grid x:Name="gamegrid" RenderTransformOrigin="0.335,0.445" Margin="0,0,0,49" 
     3                         Background="White" Opacity="0.9">
     4             <Canvas Name="canvas" Margin="5,4,5,3" >
     5                 <Ellipse Name="circle" 
     6               Width="50"
     7               Height="50"
     8               Canvas.Left="255"
     9               ManipulationDelta="OnManipulationDelta" ManipulationStarting="OnManipulationStarting"
    10                 ManipulationCompleted="OnManipulationCompleted" PointerPressed="finger_PointerPressed"
    11                        PointerMoved="finger_PointerMoved" PointerReleased="finger_PointerReleased"
    12               Canvas.Top="276" RenderTransformOrigin="3.56,3.875">
    13                     <Ellipse.DataContext>
    14                         <Button Content=" " ></Button>
    15                         <!--<Image Name="img1" Source="Assets/Pic2.png" Margin="0" Width="30" Height="30" />-->
    16                     </Ellipse.DataContext>
    17                 </Ellipse>
    18 
    19                 <TextBlock  Foreground="CornflowerBlue" Canvas.Left="48" TextWrapping="Wrap" Text="Grades" Canvas.Top="41" FontSize="18" Height="23" Width="100"
    20                        />
    21                 <TextBlock Height="23" Canvas.Left="153" TextWrapping="Wrap" 
    22                      Name="test" Foreground="CornflowerBlue"
    23                      Text="{Binding Path=HP}" Canvas.Top="41" Width="120" FontSize="18" FontFamily="Buxton Sketch"
    24                        />
    25                 <TextBlock  HorizontalAlignment="Center"  Name="lev" Foreground="CornflowerBlue" FontSize="30" Canvas.Left="135" TextWrapping="Wrap" Text="level1" Canvas.Top="10" Height="31" Width="88"/>
    26             </Canvas>
    27 
    28 
    29         </Grid>
    30 
    31     </Grid>
    32 </Page>

     

         .cs控制:

     

     1  //控制触摸移动的开始
     2         private void OnManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
     3         {
     4             mapMode = e.Mode;
     5         }
     6         //移动中触发
     7         private void OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
     8         {
     9             if (ManipulationModes.TranslateX == (mapMode & ManipulationModes.TranslateX))
    10             {
    11                 cpTransform.TranslateX += e.Delta.Translation.X;
    12                 x = cpTransform.TranslateX;
    13             }
    14             if (ManipulationModes.TranslateY == (mapMode & ManipulationModes.TranslateY))
    15             {
    16                 cpTransform.TranslateY += e.Delta.Translation.Y;
    17                 y = (double)cpTransform.TranslateY;
    18             }
    19             
    20            
    21                  
    22         }
    23         // 移动停止时触发
    24         private void OnManipulationCompleted(object sender,ManipulationCompletedRoutedEventArgs e)
    25         {
    26 
    27             
    28         }
    29 
    30         // 按下时触发
    31         Boolean pushDown = false;
    32         private void finger_PointerPressed(object sender, PointerRoutedEventArgs e)
    33         {
    34             pushDown = true;
    35            // rect1.Fill = new SolidColorBrush(Colors.Black); 
    36 
    37         }
    38         // 指针或手松开时触发
    39         private void finger_PointerReleased(object sender, PointerRoutedEventArgs e)
    40         {
    41             pushDown = false;
    42             //rect1.Fill = new SolidColorBrush(Colors.Orange); 
    43             if (p.HP <= 518 && p.HP >= 478)
    44             {
    45                 XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
    46                 XmlNodeList elements = toastXml.GetElementsByTagName("text");
    47                 elements[0].AppendChild(toastXml.CreateTextNode("恭喜你成为人生赢家!"));
    48                 ToastNotification toast = new ToastNotification(toastXml);
    49                 ToastNotificationManager.CreateToastNotifier().Show(toast);
    50             }
    51         }
    52         // 按下手或指针移动过程中触发
    53         private void finger_PointerMoved(object sender, PointerRoutedEventArgs e)
    54         {
    55             Point p = e.GetCurrentPoint(circle).Position;
    56             Point p2 = e.GetCurrentPoint(rect1).Position;
    57             mousepoint = e.GetCurrentPoint(circle).Position;
    58             if (pushDown) { 
    59             if (tag == 0)
    60             {
    61                 rect1.Fill = new SolidColorBrush(Colors.Red); //矩形的填充颜色为红色!
    62                 changecolor(p2);
    63             }
    64             else
    65             {
    66                 changecolor2(p2);
    67                 rect1.Fill = new SolidColorBrush(Colors.Green); //矩形的填充颜色为绿色!
    68             }
    69             }
    70         }

     

          效果:

            

     

    3、画刷

     前端xml界面:

     

     1  <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
     2             <Path Margin ="60,-250,0,0" Height="250" Width="250" Stretch="Uniform" 
     3               HorizontalAlignment="Left">
     4                 <Path.Fill >
     5                     <ImageBrush Stretch="UniformToFill" ImageSource="Assets/Pic1.png" />
     6                 </Path.Fill>
     7                 <Path.Data>
     8                     <GeometryGroup FillRule="EvenOdd" > 
     9                         <EllipseGeometry  RadiusX="35" RadiusY="30" 
    10                              Center="100,100">
    11                         </EllipseGeometry>
    12                     </GeometryGroup>
    13                 </Path.Data>
    14             </Path>
    15             <Ellipse Height="85" HorizontalAlignment="Left" Margin="5,0,0,151" VerticalAlignment="Bottom" Width="85" Fill="#FFF40B0B" Stroke="#FF000000" x:Name="ball" RenderTransformOrigin="0.5,0.5" Opacity="0.5">
    16                 <Ellipse.RenderTransform>
    17                     <TransformGroup>
    18                         <TranslateTransform/>
    19                     </TransformGroup>
    20                 </Ellipse.RenderTransform>
    21             </Ellipse>
    22             <StackPanel Margin="0,300,0,100" >
    23                 <ProgressRing Background="#FFF0F1FF"  x:Name="prgRing" Width="120" Height=" 120" Foreground="LightSeaGreen"
    24                 IsActive ="True"  />
    25 
    26             </StackPanel>
    27 
    28         </Grid>

     

     效果:

          见上图中透出的椭圆形图片效果

  • 相关阅读:
    Python自学之路-面试题
    k8s学习笔记之三:configmap和secret
    k8s学习笔记之二:Pod
    k8s学习笔记之四:使用kubeadm配置Ingress
    k8s学习笔记之一:使用kubeadm安装k8s集群
    HTTP content-type
    Json对象和Json字符串的区别
    .net 5+ 知新:【2】 .Net Framework 、.Net 、 .NET Standard的概念与区别
    Log4net和Nlog
    通过系统存储过程手动执行SQL Server中的Job
  • 原文地址:https://www.cnblogs.com/1995hxt/p/4528404.html
Copyright © 2020-2023  润新知