我目前正在制作一个窗口,专注于屏幕上的某些元素,同时模糊其他区域。
使用WindowCompositionAttribute等常用方法并不适合这种情况,因为它有局限性,并且它不符合有关模糊,对比度和颜色强度的标准。严格。
我设法解决我的问题是使用光图像编码器构建图像流以提高性能,但那还不够。因此,我想过将运动检测算法编写为仅在运动时才进行蒸汽处理,但它仍然没有改变性能下降。
我需要的是像原生OSX窗口和Windows 10开始菜单那样的东西,那么它们如何在没有任何重负荷的情况下有效地创建和运行呢?
答案 0 :(得分:0)
要从头创建一个新窗口,您必须将 WindowsStyle 设置为none( AllowTransparency =“True”只能与 WindowsStyle =“无”一起设置“)并从那里构建窗口的样式。 但是,如果您遵循以下方法,您将面临几个问题: - 没有按钮(最小化,关闭) - 不支持全屏(任务栏问题)
我建议你有一个基本视图,并在主视图中包含其他视图(具有模糊效果)。 通过执行以下操作可以轻松获得模糊效果:
<Grid>
<Grid Margin="5" Background="#FF3782DC">
<!--<Grid.Background>
<Image Source="test.png"></Image>
</Grid.Background>-->
<Grid.Effect>
<BlurEffect Radius="100" />
</Grid.Effect>
</Grid>
<TextBlock
x:Name="textBlock"
Height="61"
Margin="136,82,211,0"
VerticalAlignment="Top"
Text="test"
TextWrapping="Wrap" />
</Grid>
我为背景设置了一种颜色,但您可以将图像设置为背景,默认情况下它会模糊(这里您应该设置一个绑定,每次视图更改时,您都必须拍摄快照。屏幕并设置图像的来源)。但是,您可能会遇到一些性能问题,但如果使用良好的编码器(JPEG编码器),它将足够快。
希望能帮到你!