2017-10-26 1 views
0

UWP에서 회전 할 때 나는 꽤 새로운 것이므로 잘못된 방향으로 가고있다.UWP 회전 SunBurst

내 앱에서 햇살 이미지가 정사각형으로 많이 회전하고 싶습니다. video. 1,000x1000px 햇살 이미지를 만들었습니다. 나는 XAML과 C#을 통해 그것을 회전 시키려고했지만 내 노력으로 회전하는 사각형을 보았다. 나는 다음과 같은 방법을 시도 enter image description here

:

XAML :

<Page.Resources> 
     <Storyboard x:Key="Storyboard" x:Name="sb" > 
      <DoubleAnimation Storyboard.TargetName="RotateImage" 
          Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" 
          From="0" To="360" RepeatBehavior="Forever" BeginTime="00:00:00.000" Duration="00:00:5.000" /> 
     </Storyboard> 
    </Page.Resources> 

<Grid RelativePanel.AlignTopWithPanel="True" RelativePanel.AlignLeftWithPanel="True" 
         Width="300" Height="300"> 
        <Image Source="ms-appx:///Assets/SunBurst.png" x:Name="RotateImage" Stretch="Fill"> 
         <Image.RenderTransform> 
          <RotateTransform Angle="0" CenterX="150" CenterY="150" /> 
         </Image.RenderTransform> 
        </Image> 
      </Grid> 

C 번호 :

BitmapImage btpImg = new BitmapImage(); 
      btpImg.UriSource = new Uri(@"ms-appx:///Assets/SunBurst.png"); 

      Image img = new Image 
      { 
       Source = btpImg, 
       RenderTransform = new RotateTransform() 
       { 
        CenterX = 150, 
        CenterY = 150 
       }, 
       Stretch = Stretch.Fill 
      }; 

      Grid rect = new Grid 
      { 
       Width = 300, 
       Height = 300, 
      }; 

      rect.Children.Add(img); 


      Storyboard storyboard = new Storyboard(); 
      DoubleAnimation rotateAnimation = new DoubleAnimation() 
      { 
       From = 0, 
       To = 360, 
       Duration = new Duration(TimeSpan.FromSeconds(5)), 
       RepeatBehavior = RepeatBehavior.Forever, 

      }; 

      Storyboard.SetTarget(rotateAnimation, rect); 
      Storyboard.SetTargetProperty(rotateAnimation, "(UIElement.RenderTransform).(RotateTransform.Angle)"); 

      storyboard.Children.Add(rotateAnimation); 

      Board.Children.Add(rect); 

      storyboard.Begin(); 

사람이 원하는 효과 내가 크게 감사 것을 얻기에 어떤 프로 팁이있는 경우 .

+0

이미지 크기가 표시되는 화면의 * 표시 가능 영역보다 커야합니다. – Pratyay

답변

0

좋아을, 나는 해결책은있다!

먼저 나는
<Storyboard x:Key="Storyboard" x:Name="sb" > 
      <DoubleAnimation Storyboard.TargetName="RotateImage" 
          EnableDependentAnimation="True" 
          Storyboard.TargetProperty="(Brush.RelativeTransform).(CompositeTransform.Rotation)" 
          From="0" To="360" RepeatBehavior="Forever" BeginTime="00:00:00.000" Duration="00:00:5.000" /> 
     </Storyboard> 

그런 다음 나는 사각형 격자 내 이미지를 들고 변경된 내 스토리 보드를 변경해야했습니다.

<Rectangle RelativePanel.AlignTopWithPanel="True" RelativePanel.AlignLeftWithPanel="True" 
         Width="300" Height="300" x:Name="bb"> 
       <Rectangle.Fill> 
        <ImageBrush ImageSource="ms-appx:///Assets/SunBurst.png" x:Name="RotateImage" Stretch="Fill"> 
         <ImageBrush.RelativeTransform> 
           <CompositeTransform CenterY="0.5" CenterX="0.5" ScaleX="1.5" ScaleY="1.5" /> 
         </ImageBrush.RelativeTransform> 
        </ImageBrush> 
       </Rectangle.Fill> 
      </Rectangle> 
0

가 큰 확인하고 RenderTransformOrigin 설정 :

<Image Source="ms-appx:///Assets/SunBurst.png" x:Name="RotateImage" Stretch="Fill" RenderTransformOrigin="0.5,0.5"> 
     <Image.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform ScaleX="2" ScaleY="2"/> 
       <RotateTransform Angle="0"/> 
      </TransformGroup> 
     </Image.RenderTransform> 
    </Image> 
+0

답장을 보내 주셔서 감사합니다. 나는 아직도 큰 회전 정사각형을 얻고있다. 그리드 또는 캔버스보다 이미지를 회전시키는 데 더 좋은 부모 컨트롤이 있습니까? –