2011-09-22 134 views
3

我想玩WPF中的颜色和窗体的背景颜色。没有做任何其他的事情(没有代码背后,派生自另一个类等),我创建了一个全新的默认Windows窗体。我将背景改为浅蓝色。保存表单。运行该程序并打开该窗体。该形式在其他一些更暗的颜色显示像它甚至没有尊重窗口背景颜色:显示比指定的颜色更深?

<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> 

的XAML此外,如果我试图利用#4800A8A6此相同的背景值,并尝试创建一个画笔并执行一个BrushConverter.ConvertFrom(“#4800A8A6”); 并运行窗体,我仍然得到不正确的颜色显示通过设计师...什么给...

+0

更改显示器的倾斜度:P – albertjan

+0

@the_ajp ...可爱......或者正如我妻子可能会说的那样......您的眼镜是否干净?但它们仅用于读取10以内的东西“,而我的显示器距离2英尺以外... :) – DRapp

回答

5

你的颜色代码的第一个字节,'48'是一个alpha值,所以你允许在窗口上进行alpha混合(不是“Windows窗体”btw,这是一种不同的技术;)),这意味着窗口的颜色将与其背后的颜色混合。

尝试更改为:#FF00A8A6,看看是否给你一个更好的结果。

+0

实际上,您的答案是通过明确包含alpha”FF“值前缀来防止任何”出血“和记帐对于第四个可能的十六进制颜色值,我会在发布时间过后5分钟检查。 – DRapp

+0

@DRapp:避免完全指定alpha通道并使用['Brush.Opacity'](http:// msdn。 microsoft.com/en-us/library/system.windows.media.brush.opacity.aspx)依赖项属性,这样当你需要透明性时,它就更加明确(避免将来像你自己的问题) – user7116

3

你的问题是包含一个Alpha channel in the background color(即#AARRGGBB)。在设计器中,你会看到背景与VS中的任何背景颜色合成(在我的例子中是白色),与单独运行背景相比,这会“减轻”背景。

要亲自查看,请尝试Background="#00A8A6",或者您可以尝试添加AllowsTransparency="True"(但它有一个onerous requirement of WindowStyle.None)。

+0

I'请将您关于不透明度的建议纳入考虑范围。感谢您澄清您的解决方案对我的工作方式。 – DRapp

2

这可能是由于你的颜色中的alpha分量。如果你想让你的窗户透明,你必须使用AllowsTransparency="True"。如果你不这样做,WPF会将默认的窗口背景颜色与你的窗口背景合并。