如何在OSX和W10开始菜单中创建半透明模糊窗口?

时间:2017-05-25 01:31:12

标签: c# wpf blur

我目前正在制作一个窗口,专注于屏幕上的某些元素,同时模糊其他区域。

使用WindowCompositionAttribute等常用方法并不适合这种情况,因为它有局限性,并且它不符合有关模糊,对比度和颜色强度的标准。严格。

我设法解决我的问题是使用光图像编码器构建图像流以提高性能,但那还不够。因此,我想过将运动检测算法编写为仅在运动时才进行蒸汽处理,但它仍然没有改变性能下降。

我需要的是像原生OSX窗口和Windows 10开始菜单那样的东西,那么它们如何在没有任何重负荷的情况下有效地创建和运行呢?

1 个答案:

答案 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编码器),它将足够快。

希望能帮到你!