wpf 实现实时毛玻璃(live blur)效果

I2OS7发布后,就被它的时实模糊吸引了,就想着能不能将这个效果引入到我们的产品上。拿来当mask肯定会很爽,其实在之前也做过类似的,但是不是实时效果,是死的,只是截图然后模糊,当背景,效果可想而知。


然后就想着自己做实时滤镜,   自己写了高斯模糊算法,模糊效果还算可以,但是背景取样效率太低,也试过优化这个过程。试过:将截图缩小,再模糊,再放大,模糊时先横向再纵向,最终效果还是不理想。

最后 发现WPF里的自VisualBrush就可以轻松完成这个效果。 惊恐


首先来一张最终运行的效果图:



这里为了确定它真的是实时的,我将两个图片放在ScrollViewer里面。以便可以拖动预览效果。这里的模糊半径是80


主要思路是,在BlurMask里面添加一个Border,这个Border的背景就是实时模糊效果。

模糊层我是自定义了一个BlurMask控件,该控件继承Grid,以便在上面添加内容,也方便在没有被BlurMask覆盖的时候将模糊效果切断(下面那个小的模糊区域)。

BlurMask中最主要的代码:其中targetpanel就是需要覆盖的那个控件


Border border=new Border();
VisualBrush brush = new VisualBrush();
brush.Visual = targetPanel;
brush.Stretch = Stretch.Uniform;
border.Background = brush;
border.Effect = new BlurEffect()
	{
		Radius = 80,
		RenderingBias = RenderingBias.Performance
	}
border.Margin = new Thickness(-this.Margin.Left, -this.Margin.Top, 0, 0);



这样我们就能实时的将targetpanel模糊,并显示到Border的背景上。接下来需要做的就是将border添加到Grid中


this.ClipToBounds = true;
this.Children.Clear();
this.Children.Add(border);


主要代码就这么一些,然后我们要做的是暴露需要设置的参数 模糊半径和遮罩目标。



源码下载


### 回答1: 千兆网口和2.5g网口都是用于局域网或者家庭网络中的数据传输接口。它们使用了相同的RJ45接口,也就是常见的网线接口。 千兆网口可以传输速率高达1千兆比特每秒(1Gbps),也就是1000兆比特每秒。它是目前大部分家庭和办公场所常见的网络口,能够满足日常的网络需求,如上网、下载、视频观看等。千兆网口的传输速率快,能够更快地传输大量数据,提供更稳定的网络连接。 而2.5g网口是一种新兴的网络接口,传输速率为2.5千兆比特每秒(2.5Gbps)。它可以提供更高的网络速度,比千兆网口更快,适用于高带宽的应用场景,比如高清视频播放、在线游戏和大规模数据传输等。2.5g网口是介于千兆网口(1Gbps)和万兆网口(10Gbps)之间的一种选择,提供了更好的网络性能和速度,但相对来说价格更为适中。 无论是千兆网口还是2.5g网口,它们都使用相同的RJ45接口,因此可以通过相同的网线进行连接。此外,这两种网口都属于有线网口,与无线网络不同,需要通过网线连接到网络设备,提供更稳定和可靠的网络连接。 ### 回答2: 千兆网口和2.5G网口指的是以太网接口的两种类型,它们都采用了RJ45接口定义。RJ45接口是一种常用的网络连接接口,通常用于连接计算机、路由器、交换机等网络设备。 千兆网口指的是支持千兆以太网(也称为Gigabit Ethernet)的网口。它能够提供1000Mbps的传输速度,是目前常见的家庭和办公网络中常用的网口类型之一。千兆网口的RJ45接口定义符合英特尔的TIA/EIA-568-B标准,采用8P8C(8位置8合一)的物理接口。 而2.5G网口指的是支持2.5G以太网的网口类型。它提供了更高的传输速度,达到了2500Mbps(也即2.5Gbps),比千兆网口更快。2.5G网口的RJ45接口定义也符合TIA/EIA-568-B标准,采用8P8C的物理接口。 总的来说,千兆网口和2.5G网口都是通过RJ45接口实现的一种以太网连接方式。它们的不同之处在于传输速度的差异,千兆网口提供的是1000Mbps的速度,而2.5G网口则提供了更快的传输速度,达到了2500Mbps。这两种类型的网口在不同的网络环境中有着不同的适用场景,用户可以根据自己的需要选择合适的网络接口。 ### 回答3: 千兆网口和2.5G网口都是常见的以太网连接接口,通常使用RJ-45连接器。它们是用于将设备(如计算机、路由器、交换机等)连接到局域网或广域网上的主要物理接口。 千兆网口,也称为1G网口,提供了1千兆比特每秒的最大传输速率。它以太网的标准连接速度之一,支持千兆以太网(Gigabit Ethernet)技术。千兆网口使用了四对双绞线(通常是Cat5e或Cat6),可同时进行全双工通信,即同时实现发送和接收数据。它广泛应用于现代网络中,可以满足大多数家庭和办公场所的网络需求。 而2.5G网口是一种新兴的以太网连接接口,提供了2.5千兆比特每秒的最大传输速率。它是千兆网口的升级版本,也属于Gigabit Ethernet技术。2.5G网口同样使用RJ-45连接器,但它需要更高质量的双绞线(通常是Cat5e或Cat6a)来支持更高的传输速率。2.5G网口对于需要高带宽的应用非常有用,如视频流媒体、在线游戏等,在现代网络中越来越受欢迎。 总结来说,千兆网口和2.5G网口都是通过RJ-45接口定义的以太网连接接口。千兆网口提供1千兆比特每秒的传输速率,而2.5G网口提供2.5千兆比特每秒的传输速率。它们的选择取决于具体的网络需求和设备兼容性。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值