

WPF使用WebView2的空域问题(Airspace issuse)
source link: https://www.cnblogs.com/TianFang/p/17013895.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

WPF使用WebView2的空域问题(Airspace issuse)
WebView2 for wpf控件非常好用,然而,由于它是用的HwndHost的方式嵌入到WPF程序中的,和传统的使用HwndHost嵌入WinForm组件的方式一样,它有着WPF由来已久的空域问题(Airspace issuse),简单来说就是这样一个现象:
- 通过HwndHost的组件必须是z-index的顶层, 也就是说,不能在它的上面叠加其它组件。
- 组件不支持透明效果,不支持二三维变换等高级特性。
如果是以标准的矩形框的方式嵌入浏览器,且没有想在浏览器界面上叠加其它组件的需求,这个限制大部分的时候对我们没有啥其它的影响。 但它也限制了我们使用WPF中的高级组件的特效。
解决方案
要解决这个问题,常规的方式是离屏渲染,将浏览器页面在后端渲染到Bitmap中,再将Bitmap绘制到WPF组件中展现,同时还要处理鼠标等事件。像CEFSharp for wpf就是采用这种方式。并且最近看到的DotNetBrowser也支持这种方案。
这种方案主要的问题是性能问题,之前用CEF Sharp试过,性能基本上下降了一个数量级,在复杂场景(如在有大量标绘的地图上)对比WinForm的版本上有明显卡顿。并且矢量动画有比较明显的掉帧。不知道新版本或DotNetBrowser有没有改善。
WinUI
另外一个方案是使用WinUI,WinUI有着类似WPF的功能,但由于它采用了不同的渲染和集成机制,论坛上说WinUI没有这个问题,由于我不怎么用WinUI,没有试过。
官方方案
即使是离屏渲染这种低效的方案,目前WebView2也并不支持,官方虽然有issue在跟踪,但官方给出的时间计划也是一拖再拖,2年过去了也没有解决方案。虽然论坛上人们对官方的解决方案比较悲观,但这里记录下,下次需要用的时候再看看。
Recommend
-
21
使用WebView2在.Net程序中集成Edge chromium
-
22
WebView2简单试用(四)—— 使用固定版本的Edge Runtime Edge Runtime支持两种模式:长绿(All Green)和固定版本(Fixed...
-
16
在去年的 Build 大会上,我们引入了 WebView2,这是一个浏览器控件,可以用新的基于 Chrome 的 Microsoft Edge 来呈现 Web 内容(HTML / CSS / JavaScript)。它最初的范围仅限于 C/C++ 应用程序。今天,我们很高兴地宣布 .NET 应用程序的 WebView2 预览版...
-
11
Digital airspace map for drone operations released, demarcates zones for flying September 25, 2021
-
8
Israel allows drone to fly in civilian airspace in a world first I...
-
8
空域限制,日本货运航空公司暂停欧洲航班?2021年全球新造船总额攀新高!【跨境热点速达】 ...
-
8
Blueprint for integrating autonomous air taxis into the national airspace system ...
-
4
Mattia Redaelli 9 minutes ago CAP double foreign key issuse 4 Views
-
13
WebView2简介 WebView2 全称 Microsoft Edge WebView2 控件,此控件的作用是在本机桌面应用中嵌入web技术(html,css,javascript),从名字就可以看出来WebView2使用了Edge内核渲染web内容。 通俗来说,WebView2控件是一个UI组...
-
6
WPF使用WebView2的空域问题的解决方案 我在之前文章中介绍过
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK