none
win8.1 如何实现把一个page变成图片 RRS feed

  • 问题

  • 大概需求是这样,点击grdview里的某一个数据项,打开详细页,假如详细页里有一些控件或图形,如何把这个打开的详细页变成一个缩略图(或者图片)显示到 当前点击gridview数据项上面?不知道大家有没有听明白啊
    2014年7月16日 6:09

答案

  • 你好,

    可以使用RenderTargetBitmap(8.1的新内容)来实现对控件的截图,不过你需要后台先实例化这个页面,然后对Page控件截图,操作起来可能比较麻烦。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 lxd_DD 2014年7月17日 3:09
    2014年7月16日 11:34
    版主

全部回复

  • 你好,

    可以使用RenderTargetBitmap(8.1的新内容)来实现对控件的截图,不过你需要后台先实例化这个页面,然后对Page控件截图,操作起来可能比较麻烦。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 lxd_DD 2014年7月17日 3:09
    2014年7月16日 11:34
    版主
  • 追问一下,当我调用  await renderTargetBitmap.RenderAsync(view);这个方法时候,报了一个错误,“Value does not fall within the expected range.”这是怎么回事,是不是对view的值有要求,我手动改了view的高度和宽度也不行,我这里的view是一个Grid
    2014年7月17日 6:14
  • 你好 lxdhuainan,

    应该不是高度和宽度的问题,而是RenderTargetBitmap这个方法只能对可视的UIElement进行截图,我这里有一个解决方案。

    你需要在Page中添加一个Frame,名字叫ScenarioOutput,同时有一个Image用来陈放对应的截图:

            private async void Button_Click(object sender, RoutedEventArgs e)
            {
                ScenarioOutput.Navigate(typeof(BasicPage1));
                RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
                await renderTargetBitmap.RenderAsync(ScenarioOutput);
                RenderedImage.Source = renderTargetBitmap;
                ScenarioOutput.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
            }

    对应的截图如下,蓝框为我们截图的结果,你可能需要自己改一下参数什么的。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    2014年7月18日 2:32
    版主
  • 感谢您的回答,经测试发现,如果是后台编码生成一系列控件,然后把控件对象传给
    RenderTargetBitmap ,这样好像不行,必须是把控件放到xaml页面上才可以  这样问题就大了,我那个page是空的,里面就放了一个grid,然后后台动态给grid添加子项来渲染页面
    2014年7月18日 6:24
  • 那这样的话,除非你在Frame里加载page的时候也一并把grid加载了,要不然应该没法做实时截图。

    或者你是否考虑过使用静态图片来代替,因为GirdView的数据项的尺寸也不大。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    2014年7月18日 7:11
    版主