【问题标题】:Change Background opacity without changing content opacity更改背景不透明度而不更改内容不透明度
【发布时间】:2012-09-20 17:53:48
【问题描述】:

我想知道如何在不影响内部子控件的情况下更改 WPF 窗口背景的不透明度。当我将 Window 属性 'Opacity' 更改为 0.5 时,我确实得到了一个半透明窗口,但窗口内的图像也继承了 0.5 的不透明度值,那么我怎样才能只为窗口设置不透明度呢?

【问题讨论】:

  • 只是订阅你的问题,看看这是否可能,我认为不可能,但以防万一。您是否尝试将其设置为“透明”颜色并添加例如不影响其余对象的半透明矩形?

标签: .net wpf opacity


【解决方案1】:

窗口是所有内容的父容器,因此在窗口上设置不透明度将影响它包含的所有内容。我认为您想要做的是更改Window.BackgroundOpacity

使窗口具有透明度需要添加几件事。首先,您需要设置Window.AllowsTransparency = True 并设置Window.WindowStyle = NoneWindowStyle.None 在窗口镶边中创建一个没有最小化、最大化和关闭按钮的窗口,因此您必须自己在应用程序中处理它以及调整窗口大小和移动窗口。全部完成后,您可以设置Window.Background 来设置带有Opacity 的画笔。

以下代码示例将向您展示如何让窗口始终透明并将窗口背景的不透明度设置为具有不同的不透明度。

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="WpfApplication1.MainWindow"
        x:Name="Window"
        WindowStyle="None"
        AllowsTransparency="True">
    <Window.Background>
        <SolidColorBrush Color="White" Opacity="0.5"/>
    </Window.Background>
    <Grid>
        <!--Window Content-->
    </Grid>
</Window>

如果您只希望窗口中的元素可见,则始终可以将窗口背景设置为透明。

【讨论】:

  • 我正在使用样式模板。为了让它与属性设置器一起使用,我将背景颜色的 alpha 设置为所需的不透明度级别,并将背景 rgb 代码复制到背景设置器。 :) 完美运行!
  • 我认为这是一个重要的细微差别。我也在设置控件的背景和不透明度属性。以这种方式使用该属性可以更好地控制嵌入式控件的外观和感觉。
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2021-10-08
  • 2013-07-08
  • 1970-01-01
  • 2017-06-24
相关资源
最近更新 更多