登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 ...
WPF中不规则窗体与WebBrowser控件的兼容问题解决办法
[ 复制链接 ]
普料飕
2025-5-29 19:55:04
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
引言
这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序。
播放器普遍都要有个看起来比较酷的外观,于是我就给设计了个不规则形状的带透明边框的外观,如下图:
但这个设计整合到WPF中时,却遇到了一个头疼的BUG:
只要设置窗体为AllowsTransparency="True" Window,内嵌的WebBrowser就无法显示了,但它还不是真的没有了,里面加载的视频还会正常播放、出声,甚至用鼠标去点网页内容还能正常交互,就是啥也看不到。
解决办法
那么我是如何解决的呢?
经过一系列搜索,我找到了这样的代码:
前台XAML文件:http://www.google.cn/codesearch/p?hl=zh-CN#ihfHhUg5N2k/trunk/vs2010/meta/Glu/Helper/WebBrowserOverlay.xaml&q=WebBrowserOnTransparentWindow&d=5
后台CS文件:http://www.google.cn/codesearch/p?hl=zh-CN#ihfHhUg5N2k/trunk/Glu/Helper/WebBrowserOverlay.xaml.cs&q=WebBrowserOnTransparentWindow&d=3
使用时首先要把这两个文件原封不动的复制到项目中:
然后在你要加载WebBrowser的地方放置一个命名的Border元素:
然后在后台代码中这样设置:
这样你原来的Border的位置就会被载入一个WebBrowser了。
它的原理貌似就是利用一个没有不规则形状及透明新窗体承载WebBrowser,这样就避免了我们之前遇到的灵异问题,然后再通过一些Win32的API调整显示,使我们看起来和整合在一起没有什么分别,最终达成的效果如下:
稍加改进
上述的WebBrowser始终都是指的System.Windows.Controls.WebBrowser,它虽然可以被WPF直接嵌入,但它是一个废柴,相比WinForm中的WebBrowser的功能来说逊色太多了,所以我改动了一下代码,使WebBrowserOverlay类不再承载WebBrowser,而是承载WindowsFormsHost,然后我们可以自行向其中添加我们惯用的System.Windows.Forms.WebBrowser控件,改动后的使用方法变成了这样:
缺陷
不过你需要知道,这个方法并不是完美的解决办法,而且目前好像还没有完美的办法能够解决此问题,此方法目前已知的问题如下:
会在程序开始时显示一个大白方块,然后才能正常显示界面。(求解决办法T_T)
使用Windows7的时候,拖动程序到屏幕左、右、上会自动停靠并改变窗体尺寸,这时嵌入的部分是无法跟随窗体大小变化的。(解决办法是强制设定最大、最小宽度和高度。可能有办法更新,但我没有详细测试,并且我的程序不支持拖拉改变大小,所以也没做这方面的测试)
主窗口隐藏时,嵌入部分不会随之隐藏。(解决办法是在隐藏主窗体时把WebBrowserOverlay对象也设为隐藏。我的程序最小化是直接到系统托盘的,所以没测试常规的最小化是否会产生同样的问题)
目前发现的就这些了,除了第一条比较痛苦,其他的都还好~
相关资料
http://kimiya25.spaces.live.com/blog/cns!27A083D4FD9435E9!1693.entry?wa=wsignin1.0&sa=675748223
http://203.208.39.132/search?q=cache:J1BEG4zMNm0J:blogs.msdn.com/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx+http://blogs.msdn.com/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx.&cd=1&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy2-PnD6k-eTfya4Ygo-G9K99cEGV2A
http://www.google.cn/codesearch?q=WebBrowserOnTransparentWindow&hl=zh-CN&btnG=%E6%90%9C%E7%B4%A2%E4%BB%A3%E7%A0%81
下载
改进的WebBrowserOverlay类:http://cid-0612298d2255e149.skydrive.live.com/self.aspx/.Public/文档/WebBrowserOverlay.rar
本文的XPS版本:http://cid-0612298d2255e149.skydrive.live.com/self.aspx/.Public/文档/WPF中不规则窗体与WebBrowser控件的兼容问题解决办法.xps
PS:播放器可能得过些天才发布:)
PS2:
有个关于.Net程序安装的问题向各位英雄求助:
http://space.cnblogs.com/question/11103/
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
WPF
不规则
窗体
WebBrowser
控件
相关帖子
WPF治具上位机软件模板分享
WPF 模板Template
WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent
【编辑】WPF 转换器中如何使用依赖属性?
WPF 调用 ChangeWindowMessageFilterEx 修改指定窗口 (UIPI)
国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
dotnet 读 WPF 源代码 学习使用 Microsoft.DotNet.Arcade.Sdk 处理代码里的多语言
文档处理控件Aspose.Words教程:Python将Markdown转换为Word
PDF处理控件Aspose.PDF教程:如何使用Java从PDF中删除图像
一款开源、多语言的 WPF 可筛选 DataGrid 控件
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
WPF治具上位机软件模板分享
3
309
晌集涟
2025-10-13
安全
WPF 模板Template
5
622
丁若云
2025-10-14
业界
WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent
3
1088
谅潭好
2025-10-18
安全
【编辑】WPF 转换器中如何使用依赖属性?
5
268
蝓俟佐
2025-10-22
业界
WPF 调用 ChangeWindowMessageFilterEx 修改指定窗口 (UIPI)
5
105
祉遛吾
2025-10-31
业界
国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
3
135
姥恫
2025-10-31
安全
dotnet 读 WPF 源代码 学习使用 Microsoft.DotNet.Arcade.Sdk 处理代码里的多语言
3
1029
忌才砟
2025-11-07
业界
文档处理控件Aspose.Words教程:Python将Markdown转换为Word
0
251
准挝
2025-11-08
业界
PDF处理控件Aspose.PDF教程:如何使用Java从PDF中删除图像
1
526
翳舀
2025-11-29
业界
一款开源、多语言的 WPF 可筛选 DataGrid 控件
2
321
俏襟选
2025-11-29
回复
(1)
莠畅缕
2025-10-14 00:40:38
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
喳谍
前天 15:01
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
普料飕
前天 15:01
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
338
【节点】[Adjustment-WhiteBalance节点]原
298
上海专业建筑维修服务解析:标准化流程如何
942
【分析式AI】-带你弄懂XGBoost模型
728
【分析式AI】-带你弄懂XGBoost模型
48
【分析式AI】-带你弄懂XGBoost模型
270
C语言之统计天数
237
如何使用DashVector的多向量检索
270
【分析式AI】-朴素贝叶斯算法模型
215
【分析式AI】-朴素贝叶斯算法模型
933
【睿擎派】EtherCAT总线之IO模块读写
587
python3.13 3.14 新特性 好好好
783
Python新利器:用uv轻松管理venv虚拟环境和
956
Open-AutoGLM项目衍生自研app测试思路
180
.Net-Avalonia学习笔记(目录)
435
PoloAPI 绘画接口全攻略:从参数详解到实战
144
剑指offer-50、数组中重复的数字
179
嫌 Google 的 TCREI 太复杂?RACE 会更适合
975
Spring Boot中HTTP请求参数转换和请求体JSO
531
AI手机的“简单替换陷阱”与Hadoop、Cloude
474
用C#重现Gin风格:极简、效率与可扩展性设