我有我的图像标签代码:
<Image Source="{Binding ImageSource}">
<Image.LayoutTransform>
<RotateTransform Angle="{Binding RotateAngle}" />
</Image.LayoutTransform>
</Image> 我的工作是旋转图像标签。我从<RotateTransform Angle="{Binding RotateAngle}" />的视图模型中绑定了<RotateTransform Angle="{Binding RotateAngle}" />。
一切都很好:

但是如何使Image标签保持在相同的位置(比如屏幕上的第二和第三位置)和只有Source of my Image翻转(Source="{Binding ImageSource})的位置?
我可以这么做:
将string)
System.Drawing.Bitmap (现在它是一个类似于: Bitmap.RotateFlip(rotateFlipType);ImageSource = ImageUtilities.BitmapToBitmapSource(Bitmap);
)的System.Drawing.Bitmap
RotateAngle (现在不需要)一切都会好起来的:

但在我的例子中,我不认为ImageSource是一个字符串,而不是Bitmap。如何只旋转Image Source而不创建Bitmap/BitmapImage/BitmapSource对象?
发布于 2020-07-05 11:59:50
如果您只想以90°的倍数旋转,您可以使用TransformedBitmap。
修改视图模型如下所示,并绑定到其RotatedImage属性如下
<Image Source="{Binding RotatedImage}">视图模型
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private BitmapSource imageSource;
private double rotateAngle;
public BitmapSource ImageSource
{
get { return imageSource; }
set
{
imageSource = value;
PropertyChanged?.Invoke(
this, new PropertyChangedEventArgs(nameof(ImageSource)));
PropertyChanged?.Invoke(
this, new PropertyChangedEventArgs(nameof(RotatedImage)));
}
}
public double RotateAngle
{
get => rotateAngle;
set
{
rotateAngle = value;
PropertyChanged?.Invoke(
this, new PropertyChangedEventArgs(nameof(RotateAngle)));
PropertyChanged?.Invoke(
this, new PropertyChangedEventArgs(nameof(RotatedImage)));
}
}
public BitmapSource RotatedImage
{
get
{
return new TransformedBitmap(
ImageSource, new RotateTransform(RotateAngle));
}
}
}https://stackoverflow.com/questions/62739931
复制相似问题