更新uwp中的视图后如何使用RenderedTargetBitmap?
How to use the RenderedTargetBitmap after update the view in uwp?
我有滚动查看器来缩放图像,我缩放了图像并对图像进行了一些更改。然后,我试图在单击按钮时保存图像。在单击按钮时,我将缩放系数值更改为 1,然后使用 RenderedTargetBitmap class 获取滚动查看器的流。
现在我只得到缩放的区域值,不能得到我点击按钮所做的更改。我只知道 RenderedTagetBitmap return 可见值,但我想要缩小的值。请推荐我。
Now I get the zoomed area values only, not able to get the changes which I made the button click.
通过我这边的测试,如果像你描述的那样,将缩放因子更改为 1,当缩放因子为 1 时,RenderedTagetBitmap
可以正确地获取显示在 ScrollViewer
中的整个图像,不仅是缩放区域。这是简单的测试代码:
private async void btnsave_Click(object sender, RoutedEventArgs e)
{
if (RenderedScroll.ChangeView(0, 0, 1, true))
{
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(RenderedScroll, width, height);
RenderedImage.Source = renderTargetBitmap;
}
}
但是如果我没有禁用ChangeView
方法的动画,RenderedTagetBitmap
可能只会采用与您相同的缩放区域。这是由于 RenderedTagetBitmap
在 ScrollViewer
完成将视图更改为因子 1 之前获取 ScrollViewer
的内容,因为更改视图动画需要一段时间才能完成。在这种情况下,您可能需要等待一段时间才能播放动画。
private async void btnsave_Click(object sender, RoutedEventArgs e)
{
if (RenderedScroll.ChangeView(0, 0, 1))
{
await Task.Delay(TimeSpan.FromMilliseconds(500));
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(RenderedScroll, width, height);
RenderedImage.Source = renderTargetBitmap;
}
}
或者,如果您不需要,只需禁用 ChangeView
动画,如第一个代码块所示。
我有滚动查看器来缩放图像,我缩放了图像并对图像进行了一些更改。然后,我试图在单击按钮时保存图像。在单击按钮时,我将缩放系数值更改为 1,然后使用 RenderedTargetBitmap class 获取滚动查看器的流。
现在我只得到缩放的区域值,不能得到我点击按钮所做的更改。我只知道 RenderedTagetBitmap return 可见值,但我想要缩小的值。请推荐我。
Now I get the zoomed area values only, not able to get the changes which I made the button click.
通过我这边的测试,如果像你描述的那样,将缩放因子更改为 1,当缩放因子为 1 时,RenderedTagetBitmap
可以正确地获取显示在 ScrollViewer
中的整个图像,不仅是缩放区域。这是简单的测试代码:
private async void btnsave_Click(object sender, RoutedEventArgs e)
{
if (RenderedScroll.ChangeView(0, 0, 1, true))
{
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(RenderedScroll, width, height);
RenderedImage.Source = renderTargetBitmap;
}
}
但是如果我没有禁用ChangeView
方法的动画,RenderedTagetBitmap
可能只会采用与您相同的缩放区域。这是由于 RenderedTagetBitmap
在 ScrollViewer
完成将视图更改为因子 1 之前获取 ScrollViewer
的内容,因为更改视图动画需要一段时间才能完成。在这种情况下,您可能需要等待一段时间才能播放动画。
private async void btnsave_Click(object sender, RoutedEventArgs e)
{
if (RenderedScroll.ChangeView(0, 0, 1))
{
await Task.Delay(TimeSpan.FromMilliseconds(500));
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(RenderedScroll, width, height);
RenderedImage.Source = renderTargetBitmap;
}
}
或者,如果您不需要,只需禁用 ChangeView
动画,如第一个代码块所示。