Welcome

首页 / 软件开发 / .NET编程技术 / 透明浏览器窗口的实现

透明浏览器窗口的实现2011-01-19 博客园 chinese_submarine首先先看一下效果图:

本实现是基于WPF,VS版本2008 SP1。

先说一下在Winform中的实现方法:很简单通过设置窗体的opacity来实现,或者还可以设置TransparentKey来实现某种颜色透明。但是在WPF中则如何实现呢?

通过设置窗体的opacity,那么得到结果就是webbrowser整体消失了。因为这里面涉及到WPF中“空域”的问题,相关的文章如下:

http://blogs.msdn.com/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx

由此看来通过直接设置透明度的方法是不行了,那么回到原来的问题,“将浏览器窗体背景成透明”,其实这里的透明只是一个视觉上的感觉,就是浏览器中网页的背景和整个窗体的背景想融合就可以。看到这里,各位看官可能已经想到了,将浏览器中页面的背景绘制成被浏览器控件所覆盖出的背景就可以了。确实,我的实现也是依照这种思路走的。

这里主要用到了两个技术:

l Mshtml操作网页中元素,通过给body标签添加行为来实现背景的绘制。

[ComVisible(true), Guid("0015EC28-C85F-49a8-9B1A-DC91E6345274"),
ClassInterface(ClassInterfaceType.AutoDispatch)]
public class MyGadgetBodyBehavior : IElementBehavior, IHTMLPainter
{
public delegate void SizeChangedEventHandler(SizeChangedEventArgs e);
public event SizeChangedEventHandler onSizeChangedEvent;
private AppScreenSnapHelper snapHelper;