登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
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治具上位机软件模板分享
2
283
晌集涟
2025-10-13
安全
WPF 模板Template
2
601
丁若云
2025-10-14
业界
WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent
2
1070
谅潭好
2025-10-18
安全
【编辑】WPF 转换器中如何使用依赖属性?
5
247
蝓俟佐
2025-10-22
业界
WPF 调用 ChangeWindowMessageFilterEx 修改指定窗口 (UIPI)
3
90
祉遛吾
2025-10-31
业界
国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
1
120
姥恫
2025-10-31
安全
dotnet 读 WPF 源代码 学习使用 Microsoft.DotNet.Arcade.Sdk 处理代码里的多语言
2
1015
忌才砟
2025-11-07
业界
文档处理控件Aspose.Words教程:Python将Markdown转换为Word
0
243
准挝
2025-11-08
业界
PDF处理控件Aspose.PDF教程:如何使用Java从PDF中删除图像
0
510
翳舀
2025-11-29
业界
一款开源、多语言的 WPF 可筛选 DataGrid 控件
1
301
俏襟选
2025-11-29
莠畅缕
2025-10-14 00:40:38
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
普料飕
2025-10-14 00:40:38
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845355
3934307807
991122
4
xiangqian
638210
5
宋子
9987
6
闰咄阅
9991
7
刎唇
9993
8
俞瑛瑶
9998
9
蓬森莉
9952
10
匝抽
9986
查看更多