【问题标题】:Set unfocused window to grayscale - WPF C#将未聚焦的窗口设置为灰度 - WPF C#
【发布时间】:2015-08-12 03:06:58
【问题描述】:

我有一个彩色应用程序,我想在它没有聚焦时以灰度显示。

这是应用程序在获得焦点时的样子:

-- 哈!添加图片需要10个声望。


无论如何,由于mahapps(地铁),顶部栏已经变为灰色,但是当窗口未聚焦时,内容仍然是彩色的。有没有办法在内容上放置某种层? 在搜索这个主题时,我只被关于如何将图像转换为灰度的问题淹没了。

我的应用程序中有TabControlsLabelsButtonsWebBrowsersTextBlocks 和各种东西,所有内容都包含在grid 中,如果有帮助的话。


非常感谢您对此的任何想法。

【问题讨论】:

    标签: c# wpf grayscale


    【解决方案1】:

    这可以使用 PixelShaders 创建 WPF 效果来完成。这将是一个很长的答案来解释这一切。

    有关如何创建和使用灰度像素着色器效果的完整指南,请参阅此链接: Grayscale Effect - A Pixel Shader Effect in WPF

    在需要时将效果应用于每个窗口。

    【讨论】:

    • 太好了!我重建了帖子中描述的项目,它工作正常。但它再次只适用于图像!你知道我如何能够将这个像素着色器与我的所有控件一起使用,而无需将每个控件都设置为这种效果吗?
    • 将效果应用到窗口?
    • 我刚试过。为我工作。整个窗口是灰度的。
    • 能否提供代码?您是在使用事件处理程序(在后面的代码中)还是 EventTrigger (xaml) 来在未聚焦时应用效果?
    • 我在工作,无法访问我需要的文件。将效果应用到 LostFocus 事件并在 GotFocus 上移除。
    猜你喜欢
    • 2011-06-05
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2014-11-03
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多