窗口背景颜色:看起来比规定的颜色深?

3

我正在尝试在WPF中玩弄颜色和窗体的背景颜色。没有进行任何其他操作(不包括代码后台,从另一个类派生等),我创建了一个全新的默认Windows表单。我将背景更改为某种浅蓝色。保存表单。运行程序并打开该表单。表单以其他更暗的颜色出现,就好像它甚至没有尊重XAML。

<Window x:Class="MyProjectNamespace.AnotherWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="AnotherWindow" Height="300" Width="300" Background="#4800A8A6">
    <Grid>

    </Grid>
</Window>

此外,如果我尝试使用相同的背景值 #4800A8A6 创建一个画刷并执行 BrushConverter.ConvertFrom("#4800A8A6"); 然后运行表单,我仍然会得到与设计师显示的不正确颜色... 这是怎么回事...

调整你的显示器的倾斜角度 :P - albertjan
@the_ajp... 可爱...或者像我妻子可能会说的那样...你的眼镜干净吗?但它们只用于阅读10英寸内的东西,而我的显示器距离我有2英尺以上... :) - DRapp
3个回答

5
你的颜色代码中的第一个字节“48”是一个alpha值,这意味着你允许在你的窗口上进行alpha混合(顺便说一句,这不是“Windows Form”,那是一种不同的技术 ;) ),这意味着你的窗口颜色将与其后面的物体的颜色混合。

尝试更改为:#FF00A8A6,看看是否会给你带来更好的结果。


你的回答实际上更完整,因为明确包含了alpha "FF"值前缀以防止任何"出血"并考虑到第四个可能的十六进制颜色值。我会在发布后5分钟内检查。 - DRapp
@DRapp:避免完全指定 alpha 通道,而是使用 Brush.Opacity 依赖属性。这样,当您需要透明度时,更加明确(避免将来出现类似于您自己的问题)。 - user7116

3
你的问题是背景色中包含了 Alpha通道(即#AARRGGBB)。在设计器中,你会看到背景颜色与VS中的背景颜色(在我的情况下为白色)混合,这将使背景相对于独立运行时更加“明亮”。
要亲自验证这一点,请尝试使用Background="#00A8A6",或者你可以尝试添加AllowsTransparency="True" (但这有一个繁琐的要求,即 WindowStyle.None)。

我会考虑你关于不透明度的建议。感谢你澄清了你的解决方案也适用于我。 - DRapp

2
那很可能是你的颜色里有alpha分量。如果你想让窗口透明,就得用 AllowsTransparency="True"。如果不这样做,WPF就会把默认的窗口背景色和你的窗口背景色混合在一起。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接