gpt4 book ai didi

c# - WriteableBitmap 上的转换

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:51 25 4
gpt4 key购买 nike

我正在 WP7 芒果中编写应用程序,并尝试将从绑定(bind)加载的图像转换为 XAML 中的 WriteableBitmap,例如:

<Grid>
<ScrollViewer>
<Image Source="{Binding SourceImage}">
<Image.RenderTransform>
<RotateTransform Angle="{Binding RotateAngle}"/>
</Image.RenderTransform>
</Image>
</ScrollViewer>
</Grid>

我在我的 ViewModel 中将 Angle 与我的属性 Angle 绑定(bind),我从 slider 更改了这个值,但图像不旋转。提高属性(property)改变是正确的。当我使用从 contets 文件加载的图像(静态图像)执行此操作时,它有效。

最佳答案

真的很奇怪。我还不明白问题出在哪里,但您可以使用 Projection 而不是 RenderTransform 解决问题:

<Grid>
<ScrollViewer>
<Image Source="{Binding SourceImage}">
<Image.Projection>
<PlaneProjection RotationZ="{Binding RotateAngle}" />
</Image.Projection>
</Image>
</ScrollViewer>
</Grid>

编辑:

好的,实际上问题似乎出在 ScrollViewer 而不是 Image。直接在 ScrollViewer 上设置 RotateTransform,它应该可以工作:

<Grid>
<ScrollViewer>
<ScrollViewer.RenderTransform>
<RotateTransform Angle="{Binding RotateAngle}" />
</ScrollViewer.RenderTransform>
<Image Source="{Binding SourceImage}" />
</ScrollViewer>
</Grid>

或者将图像放在 ScrollPanel 内的 Grid 中:

    <ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>

<Image Source="{Binding SourceImage}">
<Image.RenderTransform>
<RotateTransform Angle="{Binding RotateAngle}" />
</Image.RenderTransform>
</Image>
</Grid>
</ScrollViewer>

但我仍然不知道为什么会这样。

编辑 2:

好的,我找到了错误。它已在最新的 WP7 版本中引入。基本上,滚动查看器将覆盖其子项的 RenderTransform(如果它不同于它自己的)。所以你有三个解决方案:

  • 直接在 ScrollViewer 上定义 RenderTransform
  • 将您的子元素包装在虚拟容器元素中。这样,虚拟元素的 rendertransform 被覆盖而不是你的:
  • 在初始化时,将 ScrollViewer 的 RotateTransform 替换为元素的:

    public MainPage()
    {
    this.InitializeComponent();

    this.ScrollViewer.RenderTransform = this.Image.RenderTransform;
    }

我个人会选择第一个或第二个解决方案。我担心第三种解决方案可能会产生意想不到的副作用。

关于c# - WriteableBitmap 上的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8826753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com