【问题标题】:Rotate a BitmapImage旋转位图图像
【发布时间】:2018-11-01 23:13:10
【问题描述】:

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

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;

但我希望 MyImageSource 得到这个修改,因为如果我再次点击按钮没有任何反应,这很正常,它会得到我的图像的第一种形式,而且我希望它采用这种形式,因为我必须保存修改后的。

为什么我必须这样做:

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

【问题讨论】:

    标签: c# wpf bitmapimage


    【解决方案1】:

    这个怎么样?

    var transformBitmap = (TransformedBitmap)image1.Source;
    RotateTransform rotateTransform = (RotateTransform)(transformBitmap.Transform);
    rotateTransform.Angle += 90;
    image1.Source = transformBitmap.Clone();
    

    【讨论】:

    • 我遇到异常:无法将“System.Windows.Media.Imaging.BitmapImage”类型的对象转换为“System.Windows.Media.Imaging.TransformedBitmap”类型。在代码的第一行
    • 在您附加的代码中,TempImage 是 TransformedBitmap 的类型。所以我将它转换为 TransformedBitmap。如果您在转换为 TransformedBitmap 时遇到问题,请确保代码与您附加的相同。
    【解决方案2】:

    这个怎么样:

    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多