zoukankan      html  css  js  c++  java
  • 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>

     

     效果:

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

  • 相关阅读:
    一行代码更改博客园皮肤
    fatal: refusing to merge unrelated histories
    使用 netcat 传输大文件
    linux 命令后台运行
    .net core 使用 Nlog 配置文件
    .net core 使用 Nlog 集成 exceptionless 配置文件
    Mysql不同字符串格式的连表查询
    Mongodb between 时间范围
    VS Code 使用 Debugger for Chrome 调试vue
    css权重说明
  • 原文地址:https://www.cnblogs.com/1995hxt/p/4528404.html
Copyright © 2011-2022 走看看