Skip to main content
 首页 » 编程设计

c#之在 C#/XAML 中旋转 BitmapImage

2024年08月06日34jillzhang

我在列表中有 2 个位图图像:

    BitmapImage img1 = new BitmapImage((new Uri("Images/image1.jpg", UriKind.Relative))); 
    BitmapImage img1 = new BitmapImage((new Uri("Images/image2.jpg", UriKind.Relative))); 
 
    List<BitmapImage> images = new List<BitmapImage>(); 
 
    images.Add(img1); 
    images.Add(img2); 

如何通过按一下按钮来旋转两个位图图像?

我已经尝试了来自 MSDN 的解决方案(如下所示),但我得到的是“'Source' 没有定义”。

private void TurnLeft_Click(object sender, RoutedEventArgs e) 
{ 
    //Create source 
    BitmapImage bi = new BitmapImage(); 
 
    //BitmapImage properties must be in a BeginInit/EndInit block 
    bi.BeginInit(); 
    bi.UriSource = new Uri("Images/image1.jpg", UriKind.Relative); 
 
    //Set image rotation 
    bi.Rotation = Rotation.Rotate270; 
    bi.EndInit(); 
 
    //set BitmapImage "img2" from List<BitmapImage> from source 
    img2.Source = bi; 
}    

请您参考如下方法:

查看以下代码段。

XAML:

<Grid> 
    <Grid.RowDefinitions> 
        <RowDefinition Height="*"/> 
        <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
 
    <Image x:Name="Image1" Stretch="Uniform" > 
        <Image.Source> 
            <BitmapImage UriSource="Images/logo.png"/> 
        </Image.Source> 
    </Image> 
 
    <Button x:Name="TurnLeftButton" Content="TurnLeft" 
            Click="TurnLeftButton_Click" 
            Grid.Row="1"/> 
</Grid> 

代码隐藏:

private void TurnLeftButton_Click(object sender, RoutedEventArgs e) 
{ 
    var biOriginal = (BitmapImage) Image1.Source; 
 
    var biRotated = new BitmapImage(); 
    biRotated.BeginInit(); 
    biRotated.UriSource = biOriginal.UriSource; 
    biRotated.Rotation = Rotation.Rotate270; 
    biRotated.EndInit(); 
 
    Image1.Source = biRotated; 
}