这篇博客介绍了如何使用UWP中的WebView控件的CapturePreviewToStreamAsync方法将HTML内容捕获为图像。方法只能捕获WebView当前显示的部分,无法获取滚动后的隐藏内容。示例展示了如何将捕获的HTML内容在Image控件中显示,并提供了保存为本地图片的代码片段。
摘要由CSDN通过智能技术生成
CapturePreviewToStreamAsaync方法可以将WebView当前所呈现的内容保存到字节流中,以做进一步处理,如保存为图像文件。
读者要注意的是,CapturePreviewToStreamAsync方法只能捕捉WebView中可见的那部分内容,如果HTML内容较多,WebView需要滚动才能看全部内容时,只有已经在WebView控件上呈现出来的那部分内容才会被捕捉到,其他不可见的内容将被忽略。
下面示例使用CapturePreviewToStreamAsuync捕捉WebView中的内容,然后在Image控件中显示已捕捉的数据。
应用程序主页的XAML代码如下:
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<WebView x:Name="wv"/>
<Button Grid.Row="1" Content="将 HTML 内容保存为图片" Tapped="Button_Tapped"/>
<Image x:Name="img" Grid.Row="2"/>
- (BOOL)
webView
:(UI
WebView
*)
webView
shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UI
WebView
NavigationType)navigationType
NSLog(@"%@",request.URL.relativeString );
<br />先定义三个重要的类NativeMethods、UnsafeNativeMethods和Snapshot:
NativeMethods.cs:
程序代码using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
namespace WindowsApplication1
1、本例子需要下载Microsoft.Web.
WebView
2
WebView
2.Runtime.X64或者
WebView
2.Runtime.X86引用库:
webview
2运行库这样放置: 代码如下:
上述代码解决了2个常见问题:(1)this.
webView
21.
Core
WebView
2的值一直是null,这是没有运行库导致(2)内部跳转,网上说的没有一个完整,正确方式如上图要加个 e.NewWindow.Navigate(e.Uri);不然跳转后空窗口啥也没有。亲测通过,绝对原创。..
RAD Studio 10.4.1的TEdgeBrowser与javascript交互-基于Chromium的Edge浏览器控件用法之二
现在delphi在服务器有了TEdgeBrowser可以很方便的与javascript相互沟通了,这都得益于基于Chromium的Microsoft Edge浏览器不仅如此,delphi的桌面c/s多层分布式应用程序的客户端,TEdgeBrowser也可以让Edge浏览器很通畅的访问Bootstrap响应式H5页面,再也不会走形变样啦。