在我的WPF應用程序,我想旋轉被放置在一個網格單元的圖像:在旋轉和自動縮放圖片
- 使用
RotateTransform
直接:<Grid> <Grid.RowDefinitions> <RowDefinition Height="50"/> <RowDefinition/> </Grid.RowDefinitions> <Button Name="btnRotate" Click="btnRotate_Click">Rotate</Button> <Image Grid.Row="1" Name="img" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> </Grid>
我嘗試了兩種思路
Image
集裝箱。不幸的是,這種轉換取消了容器的屬性VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
,並且圖像超出了單元格邊界。 - 在圖像的
TransformedBitmap
實例上使用RotateTransform
。這個構造旋轉和自動縮放,但GC不收集舊的實例;所以它浪費了很多RAM功能。
這是我的第二個想法背後的代碼。如果它不會浪費那麼多RAM,那就沒問題。
private void btnRotate_Click(object sender, RoutedEventArgs e)
{
bmp = new TransformedBitmap(bmp, new RotateTransform(90));
bmp.Freeze();
img.Source = bmp;
}
那麼,在其佈局容器中使用自動縮放旋轉圖像的最佳做法是什麼?
你有沒有用盡全力RenderTransform和LayoutTransform? – CShark
我只使用RenderTransform。 – User95
在WPF已經計算出所有尺寸和尺寸之後,RenderTransform會被應用。 LayoutTransform更改對象,然後根據更改計算大小。應該值得一試。 – CShark