2017-02-25 3 views
0

ScrollViewer (WPF)에서 이미지를 회전하려고 시도했지만 전체 이미지가 계속 표시되어야합니다. 예를 들어 회전 각이 45 인 경우 이미지의 모서리가 잘립니다. 회전 된 이미지의 주변 사각형을 계산하여 이미지의 너비와 높이를 설정해 보았습니다. 그것은 작동하지만,하지 회전 각도는 45 이상ScrollViewer에서 이미지를 회전하는 방법은 무엇입니까?

<Grid> 
    <ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Visible" Margin="0,0,0,0"> 
     <Image x:Name="image" RenderTransformOrigin="0.5,0.5" Margin="0,0,0,0" MouseDown="image_MouseDown" MouseRightButtonDown="image_MouseRightButtonDown" MouseLeftButtonDown="image_MouseLeftButtonDown"> 
      <Image.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform x:Name="scal"/> 
        <SkewTransform/> 
        <RotateTransform Angle="90" x:Name="rot"/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </Image.RenderTransform> 
     </Image> 
    </ScrollViewer> 

</Grid> 
+1

작성한 XAML 코드와 C# 코드를 추가하십시오. – Tony

+0

당신은'aspect ratio'를 유지할 필요가 있습니다, 그러면 이제는 그런 문제가있을 것입니다. – AnjumSKhan

+2

Image.RenderTransform 대신 Image.LayoutTransform을 사용했는데 효과적이었습니다. –

답변

0

사용하여 다음과 같은 구조의 ViewBox 경우 : 당신이 ViewBox과 내부 Control의 크기를 (설정해야

<ScrollViewer Width="100" Height="100" Background="Black" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
    <Viewbox Width="100" Height="100"> 
     <Border Width="100" Height="100" Background="Red" > 
      <Border.LayoutTransform> 
       <RotateTransform Angle="30" /> 
      </Border.LayoutTransform> 
     </Border> 
    </Viewbox> 
</ScrollViewer> 

주 귀하의 경우 Image)의 크기가 ScrollViewer과 같습니다. ViewBox은 내부의 크기를 Control으로 조정하여 스크롤 막대를 결코 볼 수 없도록합니다.

빨간색 테두리를 사용 했으므로 이미지를 추가 할 수 있습니다.

편집 그냥 확인. Widths를 설정하지 않고 내부 Control의 크기 만 설정할 수 있습니다. 즉,이 역시 작동합니다.

<ScrollViewer Background="Black" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
    <Viewbox> 
     <Border Width="1" Height="1" Background="Red" > 
      <Border.LayoutTransform> 
       <RotateTransform Angle="30" /> 
      </Border.LayoutTransform> 
     </Border> 
    </Viewbox> 
</ScrollViewer> 
관련 문제