C# 旋转位图图像

C# 旋转位图图像,c#,wpf,bitmapimage,C#,Wpf,Bitmapimage,我想旋转位图图像我写了一些代码,它的工作 TransformedBitmap TempImage = new TransformedBitmap(); TempImage.BeginInit(); TempImage.Source = MyImageSource; // MyImageSource of type BitmapImage RotateTransform transform = new RotateTransform(90); TempImage.Transform = tra

我想旋转位图图像我写了一些代码,它的工作

TransformedBitmap TempImage = new TransformedBitmap();

TempImage.BeginInit();
TempImage.Source = MyImageSource; // MyImageSource of type BitmapImage

RotateTransform transform = new RotateTransform(90);
TempImage.Transform = transform;
TempImage.EndInit();

image1.Source = TempImage;
但我希望我的ImageSource得到这个修改,因为如果我再次点击按钮,什么都不会发生,这是正常的,它会得到我的图像的第一个形式,而且我希望它采用这个形式,因为修改后我必须保存它

我为什么要这样做:

我有一些tiff图像要读取,其中一些可能不是正确的形式我想添加翻转90°用户单击它直到图像返回到正确的形式,当他单击翻转时,图像将以用户选择的实际形式保存(替换)到磁盘上

如何

var transformBitmap = (TransformedBitmap)image1.Source;
RotateTransform rotateTransform = (RotateTransform)(transformBitmap.Transform);
rotateTransform.Angle += 90;
image1.Source = transformBitmap.Clone();
这个怎么样:

BitmapImage image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = new Uri(ImagePath);

// here
image.Rotation = Rotation.Rotate270; // or 90, 0, 180

image.EndInit();

我遇到异常:无法将“System.Windows.Media.Imaging.BitmapImage”类型的对象强制转换为“System.Windows.Media.Imaging.TransformedBitmap”类型。在所附代码的第一行中,TempImage是TransformedBitmap的类型。所以我把它转换成变形位图。如果转换为TransformedBitmap时遇到问题,请确保代码与所附代码相同。