none
wpf可以设置图层吗,比如背景透明,但内容正常显示 RRS feed

  • 问题

  • 代码如下,我设置了窗口的背景为黑色,然后opcacity设置为0.3

    想达到的效果是窗口背景是半透明的黑色,窗口内部正常显示图片

    但设置过后发现 窗口内的图片和按钮都半透明了,有没有什么办法可以解决呢

    <Window x:Class="ImageRender.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" WindowStyle="None" AllowsTransparency="True" Background="black" Opacity="0.3" Loaded="Window_Loaded"> <Grid> <Border BorderBrush="Black" BorderThickness="10"></Border> <Grid x:Name="MainPanel" > <Grid.Resources> <TransformGroup x:Key="ImageTransformResource"> <ScaleTransform /> <TranslateTransform /> </TransformGroup> </Grid.Resources> <Rectangle x:Name="MasterImage" MouseLeftButtonDown="MasterImage_MouseLeftButtonDown" MouseLeftButtonUp="MasterImage_MouseLeftButtonUp" MouseMove="MasterImage_MouseMove" MouseWheel="MasterImage_MouseWheel"> <Rectangle.Fill> <VisualBrush Transform="{StaticResource ImageTransformResource}" Stretch="Uniform"> <VisualBrush.Visual> <Image Name="imgToDisplay"></Image> </VisualBrush.Visual> </VisualBrush> </Rectangle.Fill>


    2016年4月21日 2:44

答案

  • 我是这样对应的,Background的组成是#AARRGGBB,首先黑色的RGB是000000. 如果Opacity是1.0的话对应的A是FF,0.3的话,255 × 0.3 = 76.5,再从十进制转到十六进制,就是4C了。


    希望我的答案能帮助更多的人。

    • 已标记为答案 wpf萌新 2016年4月21日 7:30
    2016年4月21日 5:18

全部回复

  • Hi

    把Windows 的 Opacity 设置去掉,改为 Background 吧。

    Opacity="0.3" => Background="#4c000000"

    这样相当于把原来的Background从Black改为alpha为0.3的Black。


    希望我的答案能帮助更多的人。

    2016年4月21日 3:57
  • #4c000000怎么对应透明度呢,我需要调整下它
    2016年4月21日 4:57
  • 确实有用,但是怎么知道这些数字与对应透明度的关系呢
    2016年4月21日 5:14
  • 我是这样对应的,Background的组成是#AARRGGBB,首先黑色的RGB是000000. 如果Opacity是1.0的话对应的A是FF,0.3的话,255 × 0.3 = 76.5,再从十进制转到十六进制,就是4C了。


    希望我的答案能帮助更多的人。

    • 已标记为答案 wpf萌新 2016年4月21日 7:30
    2016年4月21日 5:18
  • 非常感谢!
    2016年4月21日 7:30
  • 背景用一个控件来显示,设置其透明度,其他控件放在这个的前面
    2016年4月21日 8:25
  • 背景用一个控件来显示,设置其透明度,其他控件放在这个的前面

    <Grid>
            <Grid Name="g" Background="Black"></Grid>
            <UniformGrid Rows="2" Columns="3">
                <TextBox Margin="5">TextBox</TextBox>
                <Button Margin="5">Button</Button>
                <TextBlock Margin="5">TextBlock</TextBlock>
                <Slider Name="s" VerticalAlignment="Center" ValueChanged="Slider_ValueChanged" Maximum="1" Value="1" />
            </UniformGrid>
        </Grid>

    https://social.msdn.microsoft.com/Forums/getfile/853646

    2016年4月22日 3:57