我尝试在ScrollViewer(WPF)中旋转图像,但整个图像需要保持可见。如果旋转角度是例如45,则图像的角被切掉。我尝试通过计算旋转图像的周围矩形来设置图像的宽度和高度。它可以工作,但如果旋转角度超过45则不行。
<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>
答案 0 :(得分:0)
在以下结构中使用ViewBox
:
<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>
请注意,您应该将ViewBox
和内部Control
(在您的情况下为Image
)的大小设置为等于ScrollViewer
的大小。 ViewBox
将调整内部Control
的大小,使ScrollBars永远不可见。
请注意,我使用了红色边框,您可以添加图像。
修改强>
刚检查过。您不需要设置宽度,只需要设置内部控件的大小。换句话说,这也有效:
<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>