将旋转图像复制到C#代码隐藏中的现有图像

将旋转图像复制到C#代码隐藏中的现有图像,c#,wpf,rotation,C#,Wpf,Rotation,我正在尝试将旋转图像复制到代码隐藏中的现有图像 以下是我的两张照片: <Image x:Name="tempImage1" Source="Images/firstImage.jpg" Stretch="None" VerticalAlignment="Center" HorizontalAlignment="Center" /> <Image x:Name="myImage2" Source="Images/secondImage.jpg" Stretch="None" Ve

我正在尝试将旋转图像复制到代码隐藏中的现有图像

以下是我的两张照片:

<Image x:Name="tempImage1" Source="Images/firstImage.jpg" Stretch="None" VerticalAlignment="Center" HorizontalAlignment="Center" />
<Image x:Name="myImage2" Source="Images/secondImage.jpg" Stretch="None" VerticalAlignment="Center" HorizontalAlignment="Center" />

我知道我做得不对(对这个还是很陌生)。有人能帮我指出正确的方向吗?我想要的结果是让myImage2以旋转的形式显示tempImage1,而不是原始源

如果你这样做了,你必须知道第一张图像在背景中是可见的,我只是按照你的问题以30度的角度旋转,XAML保持不变,新的C代码是


使用RenderTargetBitmap为我解决了这个问题

在XAML中使用图像
tempImage1
myImage2

RenderTargetBitmap rtb = new RenderTargetBitmap(_width, _height, 96, 96, PixelFormats.Default);
rtb.Render(tempImage1);
myImage2.Source = rtb;

假设
tempImage1
已经被旋转和转换,就可以完成上述操作

哦,糟糕,在我的原始代码中,我指的是myImage2。但是,由于某些原因,tempImage1传输的是原始未接触的图像,而不是旋转的图像。当您将Image2的源设置为tempimage.Source时,其所有属性都将被复制,即从旋转变换以及源复制。我以为这就是你想要的。还是只想旋转图像2?如果是这种情况,那么只需编写
RotateTransform rt=new RotateTransform(-theta,200300);myImage2.RenderTransform=rt无需设置源我正在尝试旋转myImage2,但因为myImage2上有一个不透明度LinearGradientBrush,它也会旋转,因为整个X、Y轴都会随着渲染变换旋转。所以我的逻辑是旋转tempImage1并将其设置为myImage2的源。这样,我在旋转图像时保持渐变笔刷不变。当您将image2的源设置为image1时,存在缺陷,然后它的所有属性都被覆盖,包括不透明度/LinearGradientBrush one。您现在需要详细说明您想要什么。根据我的理解,为什么不尝试变换图像1并放置一个矩形而不是图像2,您可以在矩形上设置LinearGradient并根据需要旋转图像。下面是我一个月前发布的完整代码:有渐变笔刷,但它是从左到右的。如果我旋转图像,梯度将变为(θ)度。所以做一些研究,唯一简单的方法就是进行图像源传输。但当然,我还是个新手,刚在大学里开始学习计算机科学,所以我可能误解了我自己。同时,你应该意识到这样做是行不通的。你可能要做的是将一个旋转的图像控件渲染成一个RenderTargetBitmap。克莱门斯,我能让你把你刚才写的作为答案吗?我刚刚尝试了RenderTargetBitmap,效果非常好!你也可以自己写答案,用代码中解决问题的相关部分。这可能比仅仅给出一个想法对其他人更有帮助。
RotateTransform rt = new RotateTransform();
rt.Angle = 30;
tempImage1.RenderTransform = rt;
myImage2.Source = tempImage1.Source;
RenderTargetBitmap rtb = new RenderTargetBitmap(_width, _height, 96, 96, PixelFormats.Default);
rtb.Render(tempImage1);
myImage2.Source = rtb;